在我的数据库中,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
之类的操作来识别这一点,但这不是必需的。
答案 0 :(得分: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'
答案 1 :(得分:1)
class Contact < ActiveRecord::Base
belongs_to :account
scope :primary, where( primary_contact: true )
end
然后,如果您有一个帐户:
account.contacts.primary
应该为您提供主要联系人。