Как я могу рассчитывать и фильтровать связанные записи в Rails? - PullRequest
0 голосов
/ 07 октября 2010

Фирма has_many Контакты

Компания has_many ContactEmails: через =>: контакты

ContactEmail принадлежит_в контакт

Контакт принадлежит компании

Contact has_many ContactEmails

Для конкретного экземпляра компании, как найти все ContactEmails и отфильтровать по атрибуту, например, date_sent?

Я пробовал Company.ContactEmails, но не думаю, что это может сделать эту ассоциацию.

Ответы [ 2 ]

0 голосов
/ 07 октября 2010

Как минимум 2 семантических способа сделать это:

  1. Через named_scope, как предложил Берлингтон (правильный способ сделать это)
  2. Просто передайте условия искателям:
    company.contact_emails.all(:conditions => ["date_sent = ?", d])
0 голосов
/ 07 октября 2010

Вы, вероятно, хотите использовать именованную область для этого. Это работает для Rails 2.3, но не сильно изменится для Rails 3.

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

ContactEmail < ActiveRecord::Base
  named_scope :by_date_sent, lambda {|d| { :conditions => ["date_sent = ?", d]}}
end

@company.contact_emails.by_date_sent(Date.today)
...