我收到错误StandardError: An error has occurred, this and all later migrations canceled: undefined local variable or method 'current_user'
。
尝试迁移此迁移时。
class AddDefaultUserId < ActiveRecord::Migration
def change
change_column :entity, :user_id, :integer, default: current_user
end
end
我需要找到一种方法,使用user_id
为Entity
传递默认current_user
。
答案 0 :(得分:2)
current_user
是一种通常在控制器或视图的上下文中定义的方法,它根据请求返回经过身份验证的用户。
您正在运行迁移,这是一个完全不同的上下文。你不能在那里引用那个方法,因为它没有被定义。
而且,根本没有意义。您必须在数据库模式中默认提供的值是一个定义良好的“静态”值,它不能是current_user
的结果,因为此类值应根据请求实时计算。
答案 1 :(得分:0)
迁移是在数据库中创建必要列的途径。我们创建了迁移,然后我们做了
rake db:migrate
然后它将在数据库中进行更新。
的机制current_user
仅用于查找当前用户将提供当前用户的详细信息。假设任何机会,您的代码在迁移时起作用,它只会更新执行迁移的用户的详细信息。根据您的要求;我所理解的是你必须保存关于当前用户的表格信息。所以没有必要这样做。因此,您只需在保存用户时更新用户的user_id即可。因此,通过user_id,我们可以获得有关用户的信息。