【发布时间】:2012-08-12 16:11:16
【问题描述】:
我正在尝试获得良好的 Ruby 编码风格。为了防止意外调用同名的局部变量,我总是在适当的地方使用self.。但现在我偶然发现了这个:
class MyClass < ActiveRecord::Base
before_validation :sanitize_user_data
private
def sanitize_user_data
self.sanitize_name # with ".self" it's a problem, without it's not!
end
def sanitize_name
unless self.name.nil?
self.name.gsub!(/\s+/, ' ')
self.name.strip!
end
end
end
以上代码导致错误
调用私有方法
sanitize_name
但是当删除 self. 并仅使用 sanitize_name 时,它可以工作。这是为什么呢?
【问题讨论】: