Условия Activerecord и именованная область действия - неопределенный метод - PullRequest
1 голос
/ 05 февраля 2011
Subscriber  
has_and_belongs_to_many :skills. 

Skill   
has_many :positions

в subscriber.rb:

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

В основном я хочу найти всех подписчиков, у которых есть позиции 1) созданные 1.day.ago И 2) созданные после подписчика

1 Ответ

5 голосов
/ 05 февраля 2011

Ошибка возникает из-за того, что класс self здесь равен Class, а не Subscriber, как требуется.

В качестве решения вы можете создать такую ​​лямду и передать параметрдля created_at: (я предполагаю, что ваша область работает иначе, потому что я не проверял это специально с вашим кодом области действия)

scope :notify_today, 
      lambda { |created_at| includes(:skills => :positions).
      where("positions.created_at > ? AND positions.created_at > ?", 
             1.day.ago, created_at) }

И используйте его:

@subscribers = notify_today(Time.now)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...