Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails 4中实现有很多子类别_Ruby On Rails_Ruby On Rails 4_Associations - Fatal编程技术网

Ruby on rails 在Rails 4中实现有很多子类别

Ruby on rails 在Rails 4中实现有很多子类别,ruby-on-rails,ruby-on-rails-4,associations,Ruby On Rails,Ruby On Rails 4,Associations,我想为我的产品实现子类别 到目前为止,我有: class Category < ActiveRecord::Base has_many :subcategories, dependent: :destroy end class Subcategory < ActiveRecord::Base has_one :category has_many :products end class Product < ActiveRecord::Base belongs_

我想为我的产品实现子类别

到目前为止,我有:

class Category < ActiveRecord::Base
  has_many :subcategories, dependent: :destroy
end

class Subcategory < ActiveRecord::Base
  has_one :category
  has_many :products
end

class Product < ActiveRecord::Base
  belongs_to :subcategory
end
类别

它可以完全正常工作,但是我想更进一步,通过这些模型之间的关联实现一个has_many,这样每个产品都将通过一个子类别属于一个类别(这样我就可以检查某个类别中总共有多少产品,等等)。但我似乎做不好。这有意义吗?还是我应该继续使用我上面的第一个版本?

要检查某个类别中有多少产品,是否添加:

class Category < ActiveRecord::Base
  has_many :products, through: :subcategories
end
另一种简写方法是使用
委托

class Product < ActiveRecord::Base
  delegate :category, to: :subcategory, prefix: false
end
类产品
在我看来,子类别应该是
属于:category
而不是
有一个:category
。然后查看如何执行下一步。我必须在子类别模型中指定什么类型的关系?您可以在示例中保持不变,或者按照@Coenwulf的建议,将
has\u one:category
更改为
beliens\u to:category
class Product < ActiveRecord::Base
  delegate :category, to: :subcategory, prefix: false
end