在将项目保存到数据库之前添加列值

时间:2012-11-27 09:08:25

标签: ruby-on-rails

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

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

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'

1 个答案:

答案 0 :(得分:3)

应该如此简单:

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

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