回答編集履歴

2

誤字の修正

2017/01/22 00:34

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -1,4 +1,4 @@
1
- `Product.search(params[:q])`はProductの**クラスメソッド**の読み出しです。対してProductクラスの定義にある`def search(query) ... end`はProductの**インスタンスメソッド**の定義です。インスタンスメソッドは何かしらのインスタンスを作成して、そこからしか呼び出せません。ですので、メソッドが見つからないというエラーになっています。
1
+ `Product.search(params[:q])`はProductの**クラスメソッド**の呼び出しです。対してProductクラスの定義にある`def search(query) ... end`はProductの**インスタンスメソッド**の定義です。インスタンスメソッドは何かしらのインスタンスを作成して、そこからしか呼び出せません。ですので、メソッドが見つからないというエラーになっています。
2
2
 
3
3
 
4
4
 

1

ちょっと補足

2017/01/22 00:34

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -1,8 +1,8 @@
1
- `Product.search(params[:q])`はProductの**クラスメソッド**の読み出しです。対してProductクラスの定義にある`def search(query) ... end`はProductの**インスタンスメソッド**の定義です。ですので、メソッドが見つからないというエラーになっています。
1
+ `Product.search(params[:q])`はProductの**クラスメソッド**の読み出しです。対してProductクラスの定義にある`def search(query) ... end`はProductの**インスタンスメソッド**の定義です。インスタンスメソッドは何かしらのインスタンスを作成して、そこからしか呼び出せません。ですので、メソッドが見つからないというエラーになっています。
2
2
 
3
3
 
4
4
 
5
- クラスメソッドとして定義する場合は`クラス名.メソッド名`または`self.メソッド名`で定義する必要があります。
5
+ クラスから直接呼び出す場合は、クラスメソッドとして定義する必要があります。クラスメソッドは`クラス名.メソッド名`または`self.メソッド名`で定義できます。
6
6
 
7
7
 
8
8