2010-10-21 53 views
2

我有5类,是销售计划的一个点的一部分:
客户,技术员,订购,票务,服务为简单销售点程序的类创建Rails 3/Active Record关联的最佳方式是什么?

每个订单都有一个客户和许多门票。每张票都有技术员和许多服务。

我应该怎么做关联,这样我可以做以下查询:
customer.order.find_by_date(10/20/2010).service.technician.name

这是我计划:

class Customer < ActiveRecord::Base 
    has_many :orders 
    has_many :tickets, :through => :orders 
    has_many :technicians, :through => :tickets 
end 

class Technician < ActiveRecord::Base 
    belongs_to :ticket 
    belongs_to :service 
end 

class Service < ActiveRecord::Base 
    has_many :technicians 
    belongs_to :ticket 
end 

class Ticket < ActiveRecord::Base 
    has_many :services 
    has_many :technicians, :through => :services  
end 

class Order < ActiveRecord::Base 
    has_many :tickets 
    has_many :services, :through => tickets 
    has_many :technicians, :through => services 

    belongs_to :customer 
end 
+0

使用您当前的布局,您将无法将查找作为has_many技术人员的服务。这应该是一个技术人员,还是有可能让多个技术人员在一个服务上工作? – Maran 2010-10-21 10:53:14

+0

多位技术人员可以执行相同的服务;但是,每张票只有一名技术人员执行一项或多项服务。 – 2010-10-21 11:47:33

回答

0

客户与订单之间的关系是一对多关系。订单和服务之间的关系也是一对多的。因此,你不能这样做:

customer.order.find_by_date('10/20/2010').service.technician.name 

它应该是:

customer.orders.find_by_date('10/20/2010').services.each do |service| 
    service.technician.name 
end 

这是一个类似的问题在你的other question

相关问题