質問は、Railsチュートリアルに関するものです。特に、 6.23のリスト、この行について疑問があります。
before_save { |user| user.email = email.downcase }
変数「email」について知りたいのですが、どこから来たのですか?左側の変数を呼び出すのは、ある種の短いRuby構文ですか?または、モデルの属性を呼び出しますか(ただし、ブロック変数の受け渡しは冗長になります)?
私の混乱を取り除いてくれる人に感謝します。
質問は、Railsチュートリアルに関するものです。特に、 6.23のリスト、この行について疑問があります。
before_save { |user| user.email = email.downcase }
変数「email」について知りたいのですが、どこから来たのですか?左側の変数を呼び出すのは、ある種の短いRuby構文ですか?または、モデルの属性を呼び出しますか(ただし、ブロック変数の受け渡しは冗長になります)?
私の混乱を取り除いてくれる人に感謝します。
はい、ユーザーをブロックに渡すことを省略できます
before_save { self.email = email.downcase }
私は個人的にブロックを使用せず、このために名前付きメソッドを作成することを好みます
before_save :reformat_email
private
def reformat_email
self.email = email.downcase
end
これは、例でActiveRecord::Baseクラスでbefore_saveを使用する例に関してANDuser
と同じである場合にのみ有効です。self
email
はの略ですuser.email
が、使用できない値を割り当てる場合はemail =
、行う必要がありますuser.email =
。そうしないと、ローカル変数にのみ割り当てられます。
例は、何が入っているかを変更することuser.email
ですuser.email.downcase
そして、引数とともにaを使用するbefore_save
と、self
その引数に含まれると思います