Rails 4获取记录和关联计数

时间:2016-01-23 09:23:01

标签: ruby-on-rails ruby ruby-on-rails-4 associations

我有两个型号,

item.rb的

class Item < ActiveRecord::Base
  belongs_to :user
  has_many :challenges
end

challenge.rb

class Challenge < ActiveRecord::Base
  belongs_to :user
  belongs_to :item
end

在我看来,我正在尝试计算

视图/项目/ index.html.haml

- @items.each do |i|
  = i.challenge.count

挑战包含以下列:

  • ID
  • USER_ID
  • ITEM_ID
  • 描述

包含这些列

  • ID
  • 标题
  • 描述

我收到此错误

undefined method `challenge' for #

就行了

= i.challenge.count

2 个答案:

答案 0 :(得分:2)

它应该是challenges(复数名词)。

= i.challenges.count

顺便说一句,因为每次调用SQL计数都非常昂贵,所以我建议使用counter_cache来更有效地查找所属对象的数量。

答案 1 :(得分:1)

实际上= i.challenges.count没问题。

但你应该使用counter_cache。

ChallengeModel

belongs_to :item, counter_cache: item

移植

add_column :items, :challenges_count, :integer, default: 0

这些代码有助于减少无用的数据库流量。