我正在尝试拥有其他模型继承的父模型,以及与第一个模型中的子项关联的辅助类。这是我到目前为止所拥有的......
我使用第一个命令创建父模型。
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
但是,如果我使用rails控制台并尝试使用Driver.new
或Passenger.new
创建新的实例驱动程序或乘客,则会遇到PostgreSQL错误。
由于我无法弄清楚的原因,Rails正在编写SQL语句以在Driver
或Passenger
表上进行查询。但是,我的理解是,只创建了一个Person
表,并且具有用于查询的type
属性。
如果有人可以在这里提供一些指导,我会非常感激。
由于
答案 0 :(得分:2)
由于您似乎正在尝试对persons
和Driver
使用公用表Passenger
,因此您不需要abstract_class
声明或{任何一个子类中的{1}}声明。根据rails文档,当您希望类从父级继承行为时,将使用这些选项,而父级本身没有表。
下面的代码段可以正常使用。
table_name