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