Rails模型方法自我.vs普通

bac*_*ser 32 ruby-on-rails

在Rails模型中查看方法时,有时我会看到self.method_name,有时只是一个method_name.有什么区别,什么是知道何时使用self.以及何时不使用的指南?

Ver*_*cus 44

self.method_name表示一个类方法; method_name表示实例方法.

你可以在这篇博文中阅读更多关于类和实例方法的内容,或者,如果你更喜欢更正式的东西,可以阅读Programming Ruby类.


For*_*est 31

1)当应用于方法定义时,'self.' 将使它成为一个类方法,而plain将是一个实例方法.

2)当应用于模型中的属性时,在更改属性时始终使用self非常重要,否则您将不需要它.

例如:

def some_method
 self.name = new_value # correct
 name = new_value # will not change the attribute
end
Run Code Online (Sandbox Code Playgroud)

  • 甚至比楼上的答案更好. (2认同)