2012-02-26 7 views
31

Railsモデルのメソッドを見ると、ときどきself.method_nameと表示され、時にはmethod_nameと表示されます。どのような違いがあり、いつ使用するかを知るためのガイドはself.であり、そうでない場合は何ですか?Railsモデルメソッドself。 vs plain

答えて

43

self.method_nameはクラスメソッドを示します。 method_nameはインスタンスメソッドを示します。

クラスとインスタンスのメソッドについてもっと詳しく読むことができますat this blog post、またはもう少し公式なものをお望みなら、Programming Ruby class section

24

1)メソッド定義に適用すると、 'self。'それはクラスメソッドになりますが、プレーンはインスタンスメソッドになります。

2)モデルの属性に適用する場合は、属性を変更するときは常に自己を使用することが重要ですが、そうでない場合は必要ありません。例えばので

:upstair答えよりも

def some_method 
self.name = new_value # correct 
name = new_value # will not change the attribute 
end 
+1

さらに良いです。 – neversion

+0

ポイント2)はナッツを運転していました。ありがとう! –

関連する問題