0

在我的数据库中,Account有很多Contacts.

class Account < ActiveRecord::Base
    has_many :contacts
end

class Contact < ActiveRecord::Base
    belongs_to :account
end

Contacts有一个名为 的字段primary_contact,表示该记录是主记录。在我需要为一个帐户提取所有联系人并分别列出主要联系人的情况下,是否有一种有效的方法可以使用 ActiveRecord 提取此主要记录,或者我应该只识别它返回的集合中的正确记录手动查看该字段的值?

理想情况下,我希望能够做类似account.primary_contact甚至contacts.primary识别这一点的事情,但这不是必需的。

4

2 回答 2

1

您可以添加has_one关联

class Account < ActiveRecord::Base
  has_many :contacts
  has_one :primary_contact, class_name: 'Contact', conditions: { primary_contact: true }
end

更新:rails 4 语法将是

has_one :primary_contact, -> { where(primary_contact: true) }, class_name: 'Contact'
于 2013-08-22T15:49:23.223 回答
1
class Contact < ActiveRecord::Base
    belongs_to :account
    scope :primary, where( primary_contact: true )
end

然后,如果您有一个帐户:

account.contacts.primary

应该给你主要的联系人。

于 2013-08-22T15:57:01.653 回答