Ruby on rails数据库关系结构

时间:2013-08-19 21:26:30

标签: ruby-on-rails ruby ruby-on-rails-3 database-design

我对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:通过,但是我不确定如何最好地实现它。

由于

1 个答案:

答案 0 :(得分:1)

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

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

Ruby on Rails Guide两者之间的比较非常好。

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