11
在整个我的申请self.
是没有必要引用一个用户的名字。 name
工作正常。为什么使用“self”访问ActiveRecord/Rails模型属性?
为什么下面的代码需要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'!我更新了这个问题。 – 2012-04-12 16:08:19
Nit:Ruby永远不会把'x = y'作为方法调用。它始终是一个直接变量(或常量,取决于具体情况)的分配。形式'x'(如表达式)取决于范围内是否存在这样一个“x”(作为变量)。 – 2012-04-12 16:08:53
如果在解析类文件后动态添加'name'和'name =',那么有时候'name'意味着'self.name',有时候'name'是一个局部变量? – 2012-04-12 16:10:33