什么是正确的导轨型号?建议使用冗余?

时间:2011-08-17 11:30:16

标签: ruby-on-rails ruby-on-rails-3 database-design model entity-relationship

在我的rails应用程序中, Company 充当用户模型公司可以有许多客户和许多员工(careller)。

carseller 客户之间存在多对多关系。

存在以下问题:很多时候我必须检索与整个公司进行的所有约会。由于约会模型中没有保存company_id,因此这可能非常痛苦。

我是否应该在约会中为公司提供外键并具有某种形式的冗余,还是有另一种简单有效的方式?

class Company < ActiveRecord::Base  
   has_many :customers
   has_many :carseller
end

class Customer < ActiveRecord::Base  
   belongs_to :company

   has_many :appointments
   has_many :carsellers, :through => :appointments
end

class Carseller < ActiveRecord::Base   
   belongs_to :company

   has_many :appointments  
   has_many :customers, :through => :appointments
end

class Appointment < ActiveRecord::Base
   belongs_to :customer
   belongs_to :carseller
end

1 个答案:

答案 0 :(得分:1)

我认为你可以使用:

class Appointment < ActiveRecord::Base
  belongs_to :customer
  belongs_to :carseller
  has_one :company, :through => :carseller
end

然后你只需要appointment.company来获得它。