1

我有一个名为 Partners 的模型和一个名为 Profiles 的模型。

一个合作伙伴有多个配置文件,一个配置文件有一个合作伙伴。

我需要一种方法来计算合作伙伴控制器以返回他们拥有多少个人资料。

在profiles 表中,该列称为:partner_id,与partners 表中的id 列相同。

我已经看过 .count() 函数,但无法计算出返回正确数字所需的内容

干杯

4

3 回答 3

10

我认为最好的方法是使用counter_cache列:

class Partner < ActiveRecord::Base
  has_many :profiles, :dependent => :destroy
end

class Profile < ActiveRecord::Base
  belongs_to :partner, :counter_cache => true
end

您应该将profiles_count列添加到partners表中。这不是一个好的调用方式,@partner.profiles.count因为它会对数据库执行额外的查询。你应该@partner.profiles.size改用。如果它已经从数据库中检索到,它将获取集合的大小并在另一种情况下执行查询。欲了解更多详情,请访问以下链接:

于 2013-01-16T11:37:05.687 回答
1
@partner = Partner.find params[:id] 
@partner.profiles.count

应该做的伎俩

于 2013-01-16T11:33:15.227 回答
1

如果你有

has_many :profiles 

在您的控制器中实例化的合作伙伴类和@partner 上,您可以执行以下操作:

@partner.profiles.count
于 2013-01-16T11:35:50.653 回答