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.