帮助我了解范围和条件

时间:2011-02-05 16:28:44

标签: ruby-on-rails activerecord

我的模特:

Subscriber  
has_and_belongs_to_many :skills

Skill
has_many :positions

Position
belongs_to :skill

我想找到所有有...的订户   1.在最后一天创建的   2.在订户创建后创建

第一个条件很简单( subscriber.rb ):

 scope :notify_today, 
 includes(:skills => :positions).where('positions.created_at > ?', 1.day.ago)

对于使用lambda的第二个条件it was suggested,但我不太明白 - 我是新手......

我正在使用 cron.rake 文件中的范围向订阅者发送电子邮件通知:

Subscriber.notify_today.each {|subsc| UserMailer.delay.new_positions_mail(subsc)}

1 个答案:

答案 0 :(得分:1)

scope :notify_today, lambda {
  joins(:skills => :positions).
  where('positions.created_at > subscribers.created_at').
  where('positions.created_at > ?', 1.day.ago)
}

请注意,joins用于搜索关联记录,而includes用于搜索关联记录。