1

nil以下のエラーが発生する理由がわかりません。しかし、追加selfしてもエラーは発生せず、すべてが修正されて割り当てられます。使用しないとうまくいかない理由を説明してもらえますselfか?

models / 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

ありがとう

4

1 に答える 1

2

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

基本的なルールとして、モデルに実際に値を割り当てるときは常に、常に使用する必要があります

self.attribute = value

ちなみに、あなたのコードがほんの一例であるかどうかはわかりませんが、必要なメソッドを探すのは好きではありません。

In the controller you could just do

@user.email = email
于 2012-04-11T21:58:21.957 に答える