我刚刚运行了一个迁移,将 :new_column
添加到 :my_table
。 这是一个序列化的专栏(整个项目中的第一个),因此我已将配置添加到模型中:
serialize :new_column, Array
我的迁移如下:
add_column :my_table, :new_column, :text
在那之后,我运行了 rake db:reset
,以播种新数据,并检查了 rails console
以确保数据已正确添加到我的:新列
。一切尽在其中。
到目前为止一切顺利,但是...在 rails server
中,我的应用程序将简单地停止并出现错误:
ActiveModel::MissingAttributeError in TestController#index
missing attribute: new_column
好吧,我只知道我的 Controller 正在尝试访问 @my_table_model.new_column
。我还检查了 schema.db
,一切正常。
可能是什么原因造成的?
最佳答案
解决了!这是一个 Rails.cache
问题。
数据库确实被填充了,但是先前模式中的一些属性被缓存了,当 Controller 试图访问时,返回了一个先前的对象(一个没有 :new_column_field
的对象)。所以最终的解决方案非常简单:
Rails.cache.clear
谢谢 Whit和 Sunxperous , 帮助我。 :)
关于ruby-on-rails - Rails 找不到刚创建的数据库列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16451972/