2

私は今までそれほど長い間Railsを勉強していませんでした....だから、もしあれば私を訂正してください

Railsでメソッドを定義する方法は2つあると思います

  1. def method_name(param)
  2. def self.method_name(param)

違いは(私が理解しているように)、1は主にコントローラーで使用され、2はモデルで使用されることです...しかし、時々、1のように定義されたモデルのメソッドにぶつかります。

2つの方法の主な違いを教えてください。

4

2 に答える 2

4

番号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
于 2012-08-03T14:34:41.590 に答える
2

メソッド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
于 2012-08-03T14:39:01.457 に答える