将迁移中的默认user_id添加为Rails中的current_user变量

时间:2015-12-11 11:23:35

标签: ruby-on-rails ruby ruby-on-rails-4 migration

我收到错误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_idEntity传递默认current_user

2 个答案:

答案 0 :(得分:2)

current_user是一种通常在控制器或视图的上下文中定义的方法,它根据请求返回经过身份验证的用户。

您正在运行迁移,这是一个完全不同的上下文。你不能在那里引用那个方法,因为它没有被定义。

而且,根本没有意义。您必须在数据库模式中默认提供的值是一个定义良好的“静态”值,它不能是current_user的结果,因为此类值应根据请求实时计算。

答案 1 :(得分:0)

迁移是在数据库中创建必要列的途径。我们创建了迁移,然后我们做了

rake db:migrate

然后它将在数据库中进行更新。

的机制
current_user

仅用于查找当前用户将提供当前用户的详细信息。假设任何机会,您的代码在迁移时起作用,它只会更新执行迁移的用户的详细信息。根据您的要求;我所理解的是你必须保存关于当前用户的表格信息。所以没有必要这样做。因此,您只需在保存用户时更新用户的user_id即可。因此,通过user_id,我们可以获得有关用户的信息。