質問: user.find_by(id: params[:id]) ``` でいうfind_byのことをメソッドといいますが、 ``` #2 def hello puts "hello!" end ``` でいうhelloのこともメソッドといいます。 これは、#1のfind_byメソッドがあらかじめRuby内で設定されているdef helloのようなもので、#2のように自作の処理をわざわざさせないために設定されているものなのでしょうか?(#1のfind_by等各種メソッドはRubyが用意してくれたライブラリ的な立ち位置?) あと、僕の中のイメージの話なのですが、#1のメソッドはピカチュウの10まんボルトでいう10まんボルトに位置するもの(オブジェクトがメソッドを使役している感覚)で、#2のメソッドの意味は関数をイメージします。 そのため、メソッドの定義についてごっちゃになってしまっているので何とかしたいというのが質問の経緯です。
回答: メソッドは本来**オブジェクトに働きかける**ものなのですが、クラスも何もなしでメソッドを作れる、というのはRubyの特殊なところです(もっとも、大きなプログラムを作る上では、クラスもなにもない「外側」に書くコードは最低限のものだけになるので、自分でメソッドを作るような場面はそう訪れません)。 なお、`user.find_by`のメソッドはRailsが用意しています。このメソッドの場合、ソースコード上できちんと`def find_by`となっていますが、Railsにはプログラムを実行して動的にメソッドを作成する、「メタプログラミング」という技法が多用されていますので、メソッド定義が見つからないこともあります。