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

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -