我无法弄清楚为什么我的迁移工作有效但却没有出现在相应的模型中......
迁移迁移以向表中添加字段:
def up
add_column :quick_tests, :trace_route_data, :text, :null => true
end
def down
remove_column :quick_tests, :trace_route_data
end
看着schema.rb
,就在那里。
在:trace_route_data
模型中<{1}}添加attr_accessible
QuickTest
打开rails控制台,运行bundle exec rails c
,我可以看到QuickTest.new
字段。但是,当我在:trace_route_data
方法中暂停时执行相同的QuickTest.new
语句时,该字段就不存在。
为什么这个字段出现在rails控制台中,而不是我的实际应用程序?
答案 0 :(得分:2)
我怀疑在迁移过程中出现了问题,因此它从未应用于数据库。 Rails使用数据库中的实际模式来构建模型对象,因此模型没有显示更改的事实意味着更改几乎肯定不在数据库中(尽管在schema.rb
中)。 / p>
我建议您回滚迁移并以详细模式再次运行。这应该显示错误,或者至少显示正在运行的SQL。在这种情况下,您可以在数据库控制台上手动运行SQL,看看会发生什么。