ruby on rails - How to get all documents and hide this which are expired if they are defined? -
i want hide past events if defined , other. how show documents if :once_at nil , if :once_at defined hide these ones expired?
my recent approach, shows events defined :once_at, (i tryed :once_at => nil, without results):
default_scope where(:once_at.gte => date.today) or (also not working)
default_scope excludes(:once_at.lte => date.today)
when think date.today evaluated? if this:
default_scope where(:once_at.gte => date.today) date.today evaluated when class being loaded. never want happen, want date.today evaluated when default scope used , usual way make happen use proc or lambda scope:
default_scope -> { where(:once_at.gte => date.today) } the next problem documents don't have :once_at or explicit nil in :once_at. nil won't greater today you'd best check conditions separately :$or query:
default_scope -> where( :$or => [ { :once_at => nil }, { :once_at.gte => date.today } ] ) end
Comments
Post a Comment