Thanks.   I got it combined.   I'll try using the scope in the product 
model.


On Sunday, January 29, 2017 at 10:01:49 PM UTC-5, j...@room118solutions.com 
wrote:
>
> ActiveRecord will handle converting a Time into something your database 
> understands, so you don't need to worry about that.  You can also write the 
> where clause manually like you did, or you can use arel, which would be my 
> preference.  You can also chain .where()'s, since they just return 
> ActiveRecord::Relations and don't actually execute until they need to. 
>  Here's how you could rewrite your code:
>
> @products = category.products.where( 'draft' => false, 'active' => true, 
> 'funded' => false).where(Product.arel_table[:enddate].gt(Time.now))
>
> I would personally define that as a scope on the Product model:
>
> scope :not_expired, -> { arel_table[:enddate].gt(Time.now) }
>
> And then your code could become:
>
> @products = category.products.not_expired.where( 'draft' => false, 
> 'active' => true, 'funded' => false)
>
> I would also probably create scopes for all of those other conditions, or 
> maybe wrap them into a single scope if you can produce a term that 
> accurately describes products that are in that exact state.
>
> On Sunday, January 29, 2017 at 1:29:03 PM UTC-5, Joe Guerra wrote:
>>
>> I'm trying to figure out how to compare my enddate > Time.now in my where 
>> clause.
>>
>> enddate is a date field, I'm just trying to only display products that 
>> haven't expired (by the date field).
>>
>>
>> I've tried...
>>
>> require 'time'
>>
>> products.where(['enddate > ?', Time.now]) 
>>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/8320c7d2-c004-4d87-803a-e40dc8f5bcfc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to