反转单表继承

时间:2015-10-16 13:57:16

标签: ruby-on-rails ruby rails-activerecord single-table-inheritance

我目前正在开展一个小项目,我遇到了以下问题:

我有以下关系:

User (id, name)
User_car(user_id,car_id)
Car (id,name)
CarSeat (id,name,car_id)
OrderItem (id,type,item_id)

在我的ruby代码中,我实现了单表继承,用户拥有整辆汽车以及汽车座椅。

class Car < ActiveRecord::Base
  has_many :car_seats
  has_and_belongs_to_many :users
  has_many :order_items, foreign_key: 'item_id'
end

class CarSeat < ActiveRecord::Base
  belongs_to :car
  has_many :order_items, foreign_key: 'item_id'
end

#Single table inheritance     

class OrderItem < ActiveRecord::Base
  self.inheritance_column = :inheritance_column
end 

class CarOrderItem < OrderItem
  belongs_to :car, foreign_key: 'item_id'
end

class CarSeatOrderItem < OrderItem
  belongs_to :car_seat, foreign_key: 'item_id' 
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :cars
  has_many :car_seats, through: :cars
end

这种结构允许我已经提取了许多有用的信息。但是,我还无法确定一种提取所有订单商品的方法,这些订单商品引用汽车或汽车座椅归属给特定用户。

用户 - &gt; has_many:order_items,通过:[cars,car_seats](因为它们都有:order_items)

这需要具有以下内容:

OrderItem has_many:用户(因为汽车可以由许多用户拥有)但由于单表继承而需要工作

0 个答案:

没有答案