1

假设用户提交了一个表单(在他的帐户中创建新项目)。

在它进入数据库之前 - 我想这样做:

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 是设计变量)

试图这样做:

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'
4

1 回答 1

4

它应该很简单:

def create
    @item = Item.new(params[:item])
    @item.user = current_user
    #...
end

您收到一个undefined local variable or method current_user错误,因为current_user在模型上下文中不可用,只有控制器和视图。

于 2012-11-27T09:13:40.033 回答