在Ruby中,如果您使用的是Single Table Inheritance,则实际上只能从另一个类继承,这是两种类型,它们共享一个公用表,并且该表具有字符串type
列。
由于您将B
声明为A
的子类,因此ActiveRecord认为b
表是不相关的,B
使用A
表。
您需要的是:
create_table "a", force: :cascade do |t|
t.string "type"
t.string "name"
t.string "bankname"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
现在您可以在此处容纳STI。请注意,所有列对于所有模型都是可见的,但是您可以将“ bankname”设为A的可选选项,或者忽略它,使其不使用。