rails association belongs_to

时间:2014-10-29 14:35:59

标签: ruby-on-rails associations belongs-to

我知道麦克风在构建我的数据库的方式上一定是错的,但请花点时间回答:我正在建立一个超市模型,其中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

列表包含多个产品,但产品不属于列表。如果用户拥有多个列表,并且列表中包含许多产品,我该怎么做? 的问候,

2 个答案:

答案 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