我对rails世界相当陌生,我的任务是创建一个在线商店。
但是我目前在设置数据库关系时遇到问题。我有产品,尺寸和发货类。产品可以有多个尺寸,具体取决于客户选择的产品类型。产品的尺寸可以决定运输的成本,但每个尺寸也会提供多种运输选项。这是我目前的设置:
Product.rb
class Product < ActiveRecord::Base
attr_accessible :title, :description, :image_url, :price, :category_id, :weighting, :stock
has_many :dimensions
end
Dimensions.rb
class Weight < ActiveRecord::Base
attr_accessible :product_id, :size, :weight
has_and_belongs_to :shippings
belongs_to :product
end
Shipping.rb
class Shipping < ActiveRecord::Base
attr_accessible :description, :insurance, :name, :price, :size_id, :weight_id
has_and_belongs_to :dimensions
end
是否有人可以就这是否是设置此数据库关系的最佳方式给出一些建议?如果没有,那么什么是更优化的解决方案?
我被告知要使用 has_many:通过,但是我不确定如何最好地实现它。
由于
答案 0 :(得分:1)
通常,has_and_belongs_to_many
和has_many :through
之间的决定因素是您是否认为您需要将关系对象(将has_many :through
绑定在一起的对象)与属性它自己的。
对我来说,我很少吝啬过度做这样的事情,所以我总是使用has_many :through
,如果我不添加属性,那就这样吧。它为我提供了一个模型,其中包含一个有用的关联名称,我可以验证该关联,获得回调等...
Ruby on Rails Guide两者之间的比较非常好。
另外,如果你正在制作一个RoR商店,你看过Spree吗?