我試圖讓其他模型繼承自其父模型,以及與第一個模型中的孩子有關聯的輔助類。這是我迄今爲止...Single Table Inheritance&ActiveRecord Associations
我用第一個命令來創建父模型。
rails g model Person name:string age:integer height:float
我然後設置Person
作爲父類,和兩個孩子類繼承它,如下圖所示。
class Person < ActiveRecord::Base
self.abstract_class = true
end
class Driver < Person
self.table_name = "Driver"
belongs_to :vehicle
end
class Passenger < Person
self.table_name = "Passenger"
belongs_to :vehicle
end
我還設置了一個Vehicle
類與Driver
和Passenger
兒童類關聯使用。
rails g model Vehicle color:string capacity:integer
class Vehicle < ActiveRecord::Base
has_one :driver
has_many :passengers
end
但是,如果我用導軌控制檯並嘗試創建一個新的實例駕駛或乘客,使用Driver.new
或Passenger.new
,我遇到一個PostgreSQL的錯誤。
由於我無法弄清楚的原因,Rails正在編寫SQL語句來查詢Driver
或Passenger
表。但是,我的理解是,只有一個Person
表已生成,並且具有用於查詢的type
屬性。
如果有人可以在這裏提供一些指導,我會非常感激。
感謝
你能告訴我們postgres錯誤嗎? –
我試着運行'$ vehicle = Vehicle.new'和'$ vehicle.driver = Driver.create'。我已發佈[pastebin上的錯誤](http://pastebin.com/LbPi8Urv) –