ruby-on-rails - Rails 找不到刚创建的数据库列

标签 ruby-on-rails database serialization

我刚刚运行了一个迁移,将 :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

谢谢 WhitSunxperous , 帮助我。 :)

关于ruby-on-rails - Rails 找不到刚创建的数据库列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16451972/

相关文章:

ruby-on-rails - 将 ActiveRecord 查询作为变量返回,而不是散列?

ruby-on-rails - 使用|| Rails中的Case开关

ruby-on-rails - 在 rails 中创建大标签

linux - 定期以自动方式导出 phpmyadmin 的查询

javascript - 在 JavaScript 中使用 json 填充数据库

java - Jackson - 使用注释将第一个数组成员绑定(bind)到对象

ruby-on-rails - 使用 will_paginate 对博客文章的随机列表进行分页

php - 使用 MySQLi 时调用非对象的成员函数

php - 在多行中存储数据与 MySQL 中的序列化数据

java - flink - 使用 Dagger 注入(inject) - 不可序列化?