如何计算和过滤Rails中的相关记录?

时间:2010-10-07 03:32:30

标签: ruby-on-rails associations

公司has_many联系人

公司has_many ContactEmails:through => :接触

ContactEmail belongs_to Contact

联系belongs_to公司

联系has_many ContactEmails

对于公司的特定实例,如何查找所有ContactEmails并过滤属性,例如date_sent?

我尝试过Company.ContactEmails,但我认为它无法建立这种关联。

2 个答案:

答案 0 :(得分:0)

您可能希望为此使用命名范围。这适用于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)

答案 1 :(得分:0)

至少有2种方法可以做到这一点:

  1. 正如Beerlington所建议的named_scope(正确的方法)。
  2. 将条件传递给发现者:
    company.contact_emails.all(:conditions => ["date_sent = ?", d])
相关问题