Rails方式为COUNT个记录数

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

合作伙伴有许多个人资料,个人资料有一个合作伙伴。

我需要一种方法来计算合作伙伴控制器,以返回他们拥有的配置文件数量。

在配置文件表中,该列被调用:partner_id,它与partners表中的id列相同。

我见过.count()函数,但无法解决我需要返回正确数字的问题

干杯

我认为最好的方法是使用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 。 如果已从数据库中检索它并在另一种情况下执行查询,它将获得集合的大小。 有关详细信息,请访问以下链接:

  • 数量与大小
  • railscast
  • belongs_to参考
  • 使用计数器缓存优化rails size查询
 @partner = Partner.find params[:id] @partner.profiles.count 

应该做的伎俩

如果你有

 has_many :profiles 

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

 @partner.profiles.count