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 は 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'
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 に答える