我正在尝试使用3个模型设置Rails 4,但我不确定如何使其工作。
品牌:
has_many :collections
has_many :items
收集:
belongs_to :brand
has_many :items
档案:
belongs_to :collection
belongs_to :brand
商品必须属于品牌。
商品只能属于同一品牌的商品。
如何设置模型和数据库以使其工作?
我考虑过为此做一个多态关联,但这不会破坏收藏和品牌之间的关系吗?或者这可以通过联系表以某种方式完成吗?
这是我对这段关系的可怕描述:
答案 0 :(得分:1)
根据您的修改,我认为最好使用Polymorphic Association。也许是这样的:
# app/models/brand.rb
class Brand < ActiveRecord::Base
has_many :collections
has_many :items, as: :itemparent
end
# app/models/collection.rb
class Collection < ActiveRecord::Base
belongs_to :brand
has_many :items, as: :itemparent
end
# app/models/collection.rb
class Item < ActiveRecord::Base
belongs_to :itemparent, polymorphic: true
end
项目表迁移如下所示:
class CreateItmes < ActiveRecord::Migration
def change
create_table :items do |t|
t.string :name
t.integer :itemparent_id
t.string :itemparent_type
t.timestamps
end
end
end
这样,您可以保留Brand
和Collection
之间的明确关联,同时让Item
能够拥有任何类型的父级。