2011-02-05 2 views
0

내 모델 :범위 및 조건을 도와

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) 
,745,람다를 사용하는 두 번째 조건 it was suggested를 들어

, 그러나 나는 확실히 그것을하지 않았다 - 나는 안돼서 ...

I 이메일 알림을 보낼 cron.rake에 파일을 범위를 사용하고 있습니다 가입자 : includes 열망 로딩 관련 기록을 위해 동안 joins는, 관련 기록에 검색하는 것을

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

답변

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

참고.

+0

좋아요! :) 이것은 매우 간단합니다. 고맙습니다. "모호한 열 이름"이라는 메시지가 있었기 때문에 "created_at"을 "subscribers.created_at"로 변경해야했습니다. –

+0

의견을 보내 주셔서 감사합니다. 다른 사람들이 같은 유형의 질문을 가지고있는 경우에 대비하여 답변을 추가했습니다. – yfeldblum