Помогите мне с областями и условиями - PullRequest
0 голосов
/ 05 февраля 2011

Моя модель:

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)

Для второго условия было предложено использовать лямбду, но яне совсем понял - я новичок ...

Я использую область в файле cron.rake для отправки уведомлений по электронной почте подписчикам:

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

1 Ответ

1 голос
/ 05 февраля 2011
scope :notify_today, lambda {
  joins(:skills => :positions).
  where('positions.created_at > subscribers.created_at').
  where('positions.created_at > ?', 1.day.ago)
}

Обратите внимание, что joins предназначен для поиска в связанных записях, а includes для активной загрузки связанных записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...