我很难设置数据库的基本结构。
我有产品(约50个)。每个产品都与一个或更多位置相关。
基本架构将是这个(暂无关系)
产品
id:integer
name:string
地点
id:integer
name:string
content:string
我首先想通过将place_id添加到产品和控制器中的has_many
belong_to
来连接地点和产品,但由于产品可能有多个地方,我不知道如何。
答案 0 :(得分:1)
只需通过连接使用
ProductsPlaces(新表)
product_id
place_id
在模特中
class Product < ActiveRecord::Base
has_many :places, :through => :products_places
end
class Place < ActiveRecord::Base
has_many :products, :through => :products_places
end
还有has_and_belongs_to_many,实际上相同(使用ProductsPlaces表)
class Product < ActiveRecord::Base
has_and_belongs_to_many :places
end
class Place < ActiveRecord::Base
has_and_belongs_to_many :products
end
但最好使用,因为has_and_belongs_to_many将被弃用。
答案 1 :(得分:1)
如果产品有多个地方和一个地方has_many产品,那么您的协会需要多对多。
在Rails中有两种方法可以做到这一点,最推荐的是连接模型。您明确标记了产品和地点之间的关系。您可以将其称为ProductLocation或Shop或类似产品,它看起来像这样:
product_locations:
product_id
place_id
class ProductLocation < ActiveRecord::Base
belongs_to :product
belongs_to :place
end
class Place < ActiveRecord::Base
has_many :product_locations
has_many :products, :through => :product_locations
end
class Product < ActiveRecord::Base
has_many :product_locations
has_many :places, :through => :product_locations
end
答案 2 :(得分:0)
听起来您想将product_id
添加到places
。
产品has_many位置
放置belongs_to产品