我知道麦克风在构建我的数据库的方式上一定是错的,但请花点时间回答:我正在建立一个超市模型,其中1个用户有一个购物清单,每个清单都有很多产品。 所以我所做的是:
class User < ActiveRecord::Base
has_many :lists
end
class List < ActiveRecord::Base
belongs_to :user
has_many :products
end
class Product < ActiveRecord::Base
????
end
列表包含多个产品,但产品不属于列表。如果用户拥有多个列表,并且列表中包含许多产品,我该怎么做? 的问候,
答案 0 :(得分:0)
有一个通过has_many通过它链接它们的类。
class ListItem < ActiveRecord::Base
belongs_to :list
belongs_to :product
end
class List < ActiveRecord::Base
belongs_to :user
has_many :list_items
has_many :products, through: :list_items
end
答案 1 :(得分:0)
你不需要额外的课程。 Rails可以使用has_and_belongs_to_many_association
为您管理此问题在你的情况下,它将是:
class User < ActiveRecord::Base
has_many :lists
end
class List < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :products
end
class Product < ActiveRecord::Base
has_and_belongs_to_many :lists
end
当然,您需要在迁移中添加连接表:
create_table :lists_products, id: false do |t|
t.belongs_to :list
t.belongs_to :product
end