Ruby on Rails中的变量调用教程列表6.23

时间:2012-11-25 20:23:55

标签: ruby-on-rails ruby railstutorial.org

问题在于Rails tutorial。特别是我怀疑listing 6.23,这一行:

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

我对变量“email”感到好奇 - 它来自哪里?调用左侧变量是一种简短的Ruby语法吗?或者它是否调用模型的属性(它会使块变量传递多余)?

我很感激有人让我感到困惑。

2 个答案:

答案 0 :(得分:3)

是的,您可以省略将用户传递到块

before_save { self.email = email.downcase }

我个人不喜欢使用块并为此

编写命名方法
before_save :reformat_email


private
def reformat_email
  self.email = email.downcase
end

答案 1 :(得分:1)

仅当示例中的userself相同且关于在ActiveRecord :: Base类中使用before_save的示例时才有效

emailuser.email的缩写,但在分配值时,您无法使用email =,您必须执行user.email =,否则您只会分配给局部变量

示例正在将user.email中的内容更改为user.email.downcase

我认为当你使用带有参数的before_save时,该参数中的self