在我的应用程序中,不需要使用self.
来引用用户的名称,name
就可以正常工作。
为什么以下代码需要self
才能按预期工作?
class User< ActiveRecord::Base
before_save :validate_name
def validate_name
if self.name.nil? || self.name.empty?
self.name= "Mr. No Name"
end
end
顺便说一下,我知道validates_presence_of
可以用来防止保存,但如果没有给出名称,我想使用默认值保存。
Rails 3.0.7。
self.day
应该是self.name
!我已经更新了问题。 - B Sevenx = y
解析为一个方法调用。它总是直接将其解析为变量(或常量,根据情况)赋值。表达式x
的形式取决于当前作用域中是否存在变量x
。 - user166390self.name
而不是name
是最佳实践吗? - B Sevenname
的意思是“本地变量名称”,仅当name
已经绑定(分配)时。在其他所有时间,它的意思是self.name
。表达式name = y
总是将y
分配给 变量name
。我更喜欢避免使用重载名称。对于设置器,始终需要obj.attr = v
。;-) - user166390