我为一个类生成了脚手架:ExpenseReport
其中一个属性是type
- 我为它创建了一个 selct,在可能的情况下有两个选项:Major
和Regular
.
提交表单以创建报告时,我出现了这个错误:
Invalid single-table inheritance type: Regular is not a subclass of ExpenseReport
我的假设是——“好吧,让我们不要有一个名为 type 的属性,看起来这可能会导致问题。” 所以我创建了一个迁移,将类型重命名为“报告类型”并 rake(请参阅下面的迁移和 rake 证明)
移民
class UpdaeColumnName < ActiveRecord::Migration
def change
rename_column :expense_reports, :type, :report_type
end
end
抽成证明
Drews-MacBook-Pro:depot drewwyatt$ rails generate migration UpdaeColumnName
invoke active_record
create db/migrate/20130820215925_updae_column_name.rb
Drews-MacBook-Pro:depot drewwyatt$ rake db:migrate
== UpdaeColumnName: migrating ================================================
-- rename_column(:expense_reports, :type, :report_type)
-> 0.0021s
== UpdaeColumnName: migrated (0.0021s) =======================================
但是,现在它永远不会保存我的输入,并且每次提交都会触发验证 - 告诉我“报告类型未包含在列表中”,是否还有其他属性名称需要更新或其他什么?
相关的_form.html.erb
<div class="field">
<%= f.label :report_type %><br>
<%= f.select :report_type, ExpenseReport::TYPES,
prompt: "select one" %>
</div>
模型
class ExpenseReport < ActiveRecord::Base
validates :place_of_purchase, :items, :reason, :estimated_cost,
:requestor_name, presence: true
TYPES = [ 'Major', 'Regular' ]
validates :report_type, inclusion: TYPES
SITES = [ '001 (Lubbock)', '002 (Odessa)', '003 (Midland)', '004 (Lubbock)' ]
validates :site, inclusion: SITES
end