私は今までそれほど長い間Railsを勉強していませんでした....だから、もしあれば私を訂正してください
Railsでメソッドを定義する方法は2つあると思います
def method_name(param)
def self.method_name(param)
違いは(私が理解しているように)、1は主にコントローラーで使用され、2はモデルで使用されることです...しかし、時々、1のように定義されたモデルのメソッドにぶつかります。
2つの方法の主な違いを教えてください。
私は今までそれほど長い間Railsを勉強していませんでした....だから、もしあれば私を訂正してください
Railsでメソッドを定義する方法は2つあると思います
def method_name(param)
def self.method_name(param)
違いは(私が理解しているように)、1は主にコントローラーで使用され、2はモデルで使用されることです...しかし、時々、1のように定義されたモデルのメソッドにぶつかります。
2つの方法の主な違いを教えてください。
番号1。これはinstance method
、モデルのインスタンスで使用できるを定義します。
番号2。これはを定義しclass method
、クラス自体でのみ使用できます。
例:
class Lol
def instance_method
end
def self.class_method
end
end
l = Lol.new
l.instance_method #=> This will work
l.class_method #=> This will give you an error
Lol.class_method #=> This will work
メソッドself.method_nameは、クラスのメソッドを定義します。基本的に、クラス定義内では、自己は定義されているクラスを参照していると考えてください。したがって、def self.method_nameと言うときは、クラス自体でメソッドを定義していることになります。
class Foo
def method_name(param)
puts "Instance: #{param}"
end
def self.method_name(param)
puts "Class: #{param}"
end
end
> Foo.new.method_name("bar")
Instance: bar
> Foo.method_name("bar")
Class: bar