2

我对 Rails 世界还很陌生,我的任务是建立一个在线商店。

但是,我目前无法设置数据库关系。我有产品尺寸运输类。一个产品可以有多个维度,具体取决于客户选择的产品变体。产品的尺寸可以决定运输成本,但是每个尺寸也会提供多种运输选项。这是我当前的设置:

产品.rb

class Product < ActiveRecord::Base
  attr_accessible :title, :description, :image_url, :price, :category_id, :weighting, :stock
  has_many :dimensions
end

尺寸.rb

class Weight < ActiveRecord::Base
  attr_accessible :product_id, :size, :weight
  has_and_belongs_to :shippings
  belongs_to :product
end

航运.rb

class Shipping < ActiveRecord::Base
  attr_accessible :description, :insurance, :name, :price, :size_id, :weight_id
  has_and_belongs_to :dimensions
end

谁能给我一些建议,这是否是设置此数据库关系的最佳方式?如果没有,什么是更优化的解决方案?

我被告知要使用has_many :through,但是我不确定如何最好地实现它。

谢谢

4

1 回答 1

1

通常,决定 和 之间的因素has_and_belongs_to_manyhas_many :through您是否认为您需要将关系对象(将 a 绑定has_many :through在一起的对象)具有自己的属性。

对我来说,我很少在做这种过度的事情上吝啬,所以我总是使用has_many :through,如果我不给它添加属性,就这样吧。它为我提供了一个具有有用名称的关联模型,我可以验证该关联,获取回调等...

Ruby on Rails 指南对两者进行了很好的比较。

另外,如果你正在做一个 RoR 商店,你看过Spree吗?

于 2013-08-19T22:19:32.833 回答