我目前正在开展一个小项目,我遇到了以下问题:
我有以下关系:
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:用户(因为汽车可以由许多用户拥有)但由于单表继承而需要工作