datetime - rails mongoid query multiple fields with same value -
i have 3 fields type: time
.
field :last_updated, type: time field :last_event, type: time field :last_status, type: time
how can make query - give me records fields less 30 minutes ago?
i don't want write following query -
model.where(:last_status.lt => 30.minutes.ago,:last_event.lt => 30.minutes.ago,:last_updated.lt => 30.minutes.ago).all
i like:
def updated_date timestamps = [self.last_status,self.last_event,self.last_updated] timestamps.reject(&:nil?).max end model.where(updated_date.lt => 30.minutes.ago).all
but it's not working...
i don't want maintain more field updated updated field each time 1 of fields updated...
any ideas?
well, here working code:
def updated_date timestamps = [ :last_status, :last_event, :last_updated ] timestamps.reject { |sym| self.public_send(sym).nil? } .max { |sym| self.public_send(sym) } end model.where(:updated_date.lt => 30.minutes.ago).all
anoter way write updated_date
method save double method calls.
def updated_date timestamps = { last_status: self.last_status, last_event: self.last_event, last_updated: self.last_updated } timestamps.reject { |_, v| v.nil? }.max_by(&:last).first end model.where(:updated_date.lt => 30.minutes.ago).all
Comments
Post a Comment