Rails:我应该总是定义模型之间的关联吗?

时间:2010-12-19 03:18:24

标签: ruby-on-rails associations ruby-on-rails-3

我有以下型号:

class Aircon < ActiveRecord::Base
  belongs_to :shop
  belongs_to :brand
  belongs_to :power
  accepts_nested_attributes_for :shop, :brand, :power
end

class Shop < ActiveRecord::Base
  has_many :aircons
  has_many :brands, :through => :aircons
  has_many :powers, :through => :aircons
end

class Brand < ActiveRecord::Base
  has_many :aircons
  has_many :shops,  :through => :aircons
  has_many :powers, :through => :aircons
end

class Power < ActiveRecord::Base
  has_many :aircons
  has_many :shops,  :through => :aircons
  has_many :brands, :through => :aircons
end

问题1

如您所见,每两个模型之间存在适当的关联。一般来说,只要有意义,我认为这样做并不是一个坏主意。你觉得怎么样?

问题2

现在,我想添加另一个模型Model,并设置以下关联:

class Model < ActiveRecord::Base
  belongs_to :brand
end  

class Brand < ActiveRecord::Base
  ...
  has_many :models
end

ModelAircon之间的适当关联是什么?

问题3

您会定义以下关联:

  • ModelShop
  • ModelPower

如果是,那什么类型的关联?

1 个答案:

答案 0 :(得分:2)

我记得Model可能会被保留。您可能必须使用Make。

Q1 在Rails中以两种方式链接模型是最佳实践。

Q2 型号:has_many =&gt; :aircons

空调:belongs_to =&gt; :模型

Q3 我不会让Power成为一个模特。真的是空调的一个属性。我猜测Air的功率是BTU或冷却瓦特。 Aircons所拥有的东西。

然后你会说Aircons.find_by_power(500..1000)找到所有拥有500到1000力量的Aircons