首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails计算记录数的方法

Rails计算记录数的方法
EN

Stack Overflow用户
提问于 2013-01-16 19:30:17
回答 3查看 9.5K关注 0票数 1

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

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

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

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

我看过.count()函数,但不知道需要什么才能返回正确的数字

干杯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-16 19:37:06

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

代码语言:javascript
复制
class Partner < ActiveRecord::Base
  has_many :profiles, :dependent => :destroy
end

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

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

  • Count vs size
  • railscast
  • belongs_to reference
  • Optimize rails size query with counter cache
票数 10
EN

Stack Overflow用户

发布于 2013-01-16 19:33:15

代码语言:javascript
复制
@partner = Partner.find params[:id] 
@partner.profiles.count

应该能起到作用

票数 1
EN

Stack Overflow用户

发布于 2013-01-16 19:35:51

如果你有

代码语言:javascript
复制
has_many :profiles 

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

代码语言:javascript
复制
@partner.profiles.count
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14357378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档