NoMethodError?计数记录

时间:2012-03-08 10:17:34

标签: ruby-on-rails ruby-on-rails-3 aggregate-functions

我有以下型号:

class Label < ActiveRecord::Base
  has_many :releases
end

class Release < ActiveRecord::Base
  belongs_to :label
  has_many :products
  has_and_belongs_to_many :tracks

  def self.releases_count
   self.count(:all)
  end
end

class Product < ActiveRecord::Base
  belongs_to :release

  has_many :releases_tracks, :through => :release, :source => :tracks      
  has_and_belongs_to_many :tracks

  def self.products_count
   self.count(:all)
  end
 end

在我的标签/索引视图中,我可以使用以下方式显示发布的计数:

 <%= label.releases.releases_count %>

我正在尝试使用以下产品做同样的事情:

 <%= label.releases.products.products_count %>

但是得到NoM​​ethodError:

 undefined method `products' for #<Label:0x10ff59690>

有什么想法吗?

我还有许多我想要执行的其他聚合(Track Counts等),因此我会非常感谢您对我出错的地方提供一些指导。

1 个答案:

答案 0 :(得分:3)

您需要定义生产/标签关联

class Label < ActiveRecord::Base
  has_many :releases
  has_many :products, :through => :releases
end