我已经设置了单表继承,我的form_field
模型中的type列以及number_field
继承的text_field
和form_field
类。
考虑以下事项(当我启动rails console
时):
2.1.1 :001 > nf = NumberField.new
=> #<NumberField id: nil, label: nil, created_at: nil, updated_at: nil, type: "NumberField">
2.1.1 :002 > nf.is_a? FormField
=> true
我尝试了以下迁移:
class AddInputToNumberFields < ActiveRecord::Migration
def change
add_column :number_fields, :input, :integer
end
end
但是,当我运行rake db:migrate
时,控制台会抱怨说我无法添加列,因为:number_fields
不是表格(STI,因此表格为:form_fields
)。
我已经浏览了很长一段时间,但没有任何问题或Google链接明确地解释了它。
答案 0 :(得分:2)
您需要将列添加到STI表的基类中。如果NumberField
继承自FormField
,则将列添加到form_fields
。你基本上通过观察这个来回答你自己的问题了。
请记住,STI代表“单表继承”,因此只有一个表可以修改。
答案 1 :(得分:1)
将列添加到STI表:form_fields
class AddInputToNumberFields < ActiveRecord::Migration
def change
add_column :form_fields, :input, :integer
end
end