我有一个名为Partners的模型和一个名为Profiles的模型。
合作伙伴拥有多个个人资料,个人资料中有一个合作伙伴。
我需要一种方法来计算合作伙伴控制器,以返回他们拥有的配置文件数量。
在配置文件表中,该列被调用:partner_id,它与partners表中的id列相同。
我已经看过.count()函数,但无法解决我需要返回正确数字的问题
干杯
答案 0 :(得分:9)
我认为最好的方法是使用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
代替。如果已从数据库中检索它并在另一种情况下执行查询,它将获得集合的大小。
有关详细信息,请访问以下链接:
答案 1 :(得分:1)
@partner = Partner.find params[:id]
@partner.profiles.count
应该做的伎俩
答案 2 :(得分:1)
如果你有
has_many :profiles
在Partner类和@partner中实例化你的控制器,然后你可以这样做:
@partner.profiles.count