假设用户提交表单(在他的帐户中创建新项目)。
在进入数据库之前 - 我想这样做:
params[:user] => current_user.id
# make a note of who is the owner of the item
# without people seing this or being able to change it themselves
# and only after that to save it to database
最好的方法是什么?
我在控制器中看到的只有:
def create
@item = Item.new(params[:item])
...
end
而且我不确定如何更改params [:item]
下的值(current_user.id是Devise变量)
试图这样做:
class Item < ActiveRecord::Base
before_save :set_user
protected
def set_user
self.user = current_user.id unless self.user
end
end
出了错误:
undefined local variable or method `current_user'
答案 0 :(得分:3)
应该如此简单:
def create
@item = Item.new(params[:item])
@item.user = current_user
#...
end
您收到undefined local variable or method current_user
错误,因为current_user
在模型上下文中不可用,只有控制器和视图。