Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从ActiveRecord集合中提取特定记录的最有效方法_Ruby On Rails_Ruby_Activerecord_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 从ActiveRecord集合中提取特定记录的最有效方法

Ruby on rails 从ActiveRecord集合中提取特定记录的最有效方法,ruby-on-rails,ruby,activerecord,ruby-on-rails-4,Ruby On Rails,Ruby,Activerecord,Ruby On Rails 4,在我的数据库中,帐户有许多联系人 class Account < ActiveRecord::Base has_many :contacts end class Contact < ActiveRecord::Base belongs_to :account end 类帐户

在我的数据库中,
帐户
有许多
联系人

class Account < ActiveRecord::Base
    has_many :contacts
end

class Contact < ActiveRecord::Base
    belongs_to :account
end
类帐户
Contacts
有一个名为
primary\u contact
的字段,它将记录表示为主要联系人。如果我需要提取某个帐户的所有联系人,并分别列出主要联系人,那么是否有一种有效的方法可以使用ActiveRecord提取此主要记录,或者我应该通过手动查看该字段的值来识别它返回的集合中的正确记录


理想情况下,我希望能够做一些类似于
帐户。主要联系人
甚至
联系人。主要联系人
来识别这一点,但这不是必需的。

您可以添加一个
有一个关联

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

应该给你主要联系人。

主要联系人是布尔值吗?
这个答案是第一个答案,我试过了,效果很好。但是,从另一个答案来看,他使用的是范围。这种差异是因为一个绑定到Account,而另一个绑定到Contact吗?主要的区别是有关联声明您有一个主要联系人。而拥有一个范围只会给你一个范围。要获取帐户的主要联系人(假设每个帐户只有一个),您需要执行
account.contacts.primary.first
操作,您可以使用
帐户执行该操作。主要联系人
。是否应
:主要联系人:
首先执行该操作:?
has_one :primary_contact, -> { where(primary_contact: true) }, class_name: 'Contact'
class Contact < ActiveRecord::Base
    belongs_to :account
    scope :primary, where( primary_contact: true )
end
account.contacts.primary