简单迁移后未定义的方法“ fetch_value”

时间:2018-12-24 15:04:08

标签: ruby-on-rails devise

我进行了迁移到删除该列并创建一个新列的基础(在用户表中,是devise gem)。之后,在输出所有用户的控制台(导轨c)中将输出:

irb(main):003:0> User.all User Load (1.0ms) SELECT "users".* FROM "users" LIMIT $1 [["LIMIT", 11]] (Object doesn't support #inspect) =>

例如,如果输入User.first

irb(main):004:0> User.first User Load (0.7ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1 [["LIMIT", 1]] Traceback (most recent call last):1: from (irb):4 NoMethodError (undefined method fetch_value'for nil:NilClass)]`

应用程序本身崩溃了,它在控制台中写入了问题:

  `undefined method 'fetch_value' for nil: NilClass`

在提取的源中,该问题写在:       <% if user_signed_in? %>

迁移代码

class RechangeFlagsToClass < ActiveRecord::Migration[5.1] def change remove_column :users, :flags add_column :users, :class, :integer, default: 5 end end

1 个答案:

答案 0 :(得分:3)

哦,那是一个错误。

class是保留字。您不可以使用它。这是一个对象方法,它返回对象的类,因此,如果您在变量my_boss中有一个User.object并执行了my_boss.class,您将看到返回了User

编写另一个迁移,以删除class并添加另一种方法class_number或其他内容。