公司的has_many联系人如何计算和过滤Rails中的关联记录?
公司的has_many ContactEmails:通过=>:接触
ContactEmail belongs_to的联系
联系belongs_to的公司
联系的has_many ContactEmails
对于公司的特定实例,我怎样才能找到所有的ContactEmails和过滤属性,如date_sent?
我试过Company.ContactEmails,但我不认为它可以使该关联。
公司的has_many联系人如何计算和过滤Rails中的关联记录?
公司的has_many ContactEmails:通过=>:接触
ContactEmail belongs_to的联系
联系belongs_to的公司
联系的has_many ContactEmails
对于公司的特定实例,我怎样才能找到所有的ContactEmails和过滤属性,如date_sent?
我试过Company.ContactEmails,但我不认为它可以使该关联。
您可能希望为此使用命名范围。这适用于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)
至少2的方式来做到这一点的语义:
named_scope
作为Beerlington曾建议(做正确的方式)。company.contact_emails.all(:conditions => ["date_sent = ?", d])
有趣......我不知道HAS_ONE:通过对Contactemails? – Angela 2010-10-07 03:46:14
嗯...你是对的....我没有使用lambda命名作用域只是使用条件....我应该使用它吗?想知道为什么searchlogic不会让我做同样的事情....你熟悉searchlogic吗? – Angela 2010-10-07 03:49:32
我不太熟悉searchlogic,除了阅读github自述文件以外。它似乎可以工作,但我没有看到任何处理日期的例子。我遇到过为此目的而使用它的人http://stackoverflow.com/questions/1829477/date-conditions-using-search-logic – 2010-10-07 04:25:34