我正在尝试获得良好的 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
,它可以工作。为什么?