1

質問は、Railsチュートリアルに関するものです。特に、 6.23のリスト、この行について疑問があります。

before_save { |user| user.email = email.downcase }

変数「email」について知りたいのですが、どこから来たのですか?左側の変数を呼び出すのは、ある種の短いRuby構文ですか?または、モデルの属性を呼び出しますか(ただし、ブロック変数の受け渡しは冗長になります)?

私の混乱を取り除いてくれる人に感謝します。

4

2 に答える 2

3

はい、ユーザーをブロックに渡すことを省略できます

before_save { self.email = email.downcase }

私は個人的にブロックを使用せず、このために名前付きメソッドを作成することを好みます

before_save :reformat_email


private
def reformat_email
  self.email = email.downcase
end
于 2012-11-25T20:35:40.257 に答える
1

これは、例でActiveRecord::Baseクラスでbefore_saveを使用する例に関してANDuserと同じである場合にのみ有効です。self

emailはの略ですuser.emailが、使用できない値を割り当てる場合はemail =、行う必要がありますuser.email =。そうしないと、ローカル変数にのみ割り当てられます。

例は、何が入っているかを変更することuser.emailですuser.email.downcase

そして、引数とともにaを使用するbefore_saveと、selfその引数に含まれると思います

于 2012-11-25T20:34:52.623 に答える