获取对象有很多通过多态关联

时间:2017-04-17 05:45:34

标签: ruby-on-rails ruby activerecord associations ruby-on-rails-5

我正在使用rails 5.

我在这里使用了多种多态

表是

categories, category_items, albums

模型

Category, CategoryItem, Album

应用程序/模型/ album.rb

class Album < ApplicationRecord
  has_many :category_items, as: :category_itemable, dependent: :destroy
  has_many :categories, through: :category_items
end

应用程序/模型/ category.rb

class Category < ApplicationRecord
  has_many :category_items, dependent: :destroy
end

应用程序/模型/ category_item.rb

class CategoryItem < ApplicationRecord
  belongs_to :category_itemable, polymorphic: true, optional: true
  belongs_to :category, optional: true
end 

我可以通过关联获取特定专辑的类别。但现在我需要获得特定类别的专辑。

请找到解决方案并确保不使用方法。协会应该干净简单

非常感谢提前

1 个答案:

答案 0 :(得分:2)

您只需在has_many模型中为album添加Category关联

class Category < ApplicationRecord
  has_many :category_items, dependent: :destroy
  has_many :albums, through: :category_items, source: :category_itemable, source_type: 'Album'
end

现在,您将能够获取类别实例的相册