我进行了迁移到删除该列并创建一个新列的基础(在用户表中,是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
答案 0 :(得分:3)
哦,那是一个错误。
class
是保留字。您不可以使用它。这是一个对象方法,它返回对象的类,因此,如果您在变量my_boss
中有一个User.object并执行了my_boss.class
,您将看到返回了User
。
编写另一个迁移,以删除class
并添加另一种方法class_number
或其他内容。