2012-04-11 14 views
1

なぜnilエラーが発生するのか分かりません。しかし、私がselfを追加したとき、私はエラーを取得せず、すべてが訂正されて割り当てられます。あなたが私になぜselfを使用しないと説明できますか?これはうまくいきませんか?ruby​​ on railのデータベースフィールド更新で自己を使用する

モデル/ user.rb

def update_user_email!(new_email) 
    email = new_email # When I use self.name = new_email this works 
end 

コントローラ/ users_controller

def create 
    @user = User.new(params[:user]) 
    @user.update_user_email!(email) 
    @user.save 
end 

おかげ

答えて

2

あなたがモデルの内部メソッドである場合、あなただけの属性名を使用している場合、それは意志スコープがこのメソッドに限定された変数のように扱います。 self.attributeを使用すると、モデルの基になるフィールドに実際にアクセスし、値を割り当てることができます。基本的なルールとして

、あなたが実際にモデルに値を代入されているすべての時間は、あなたは常にサイドポイントで

self.attribute = value 

を使用する必要があり、私はあなたのコードは参考用のみだったかどうかわからないのですが、それあなたが必要とする方法を見て好きではありません。あなただけ

@user.email = email 
を行うことができ、コントローラで

関連する問題