質問: `rails g scaffold memo` すると `edit_memo_path` っていうメソッドが書かれたビューが生成されるんですが このメソッドの定義ってどこにあるんでしょうか Rails も ruby も勉強始めたばかりで rubyのネイティブメソッドなのか Rails 特有のメソッドなのか ユーザ定義なのかが良く分かってない感じです memo っていうのは自分で入力したモデル名なので ユーザ定義のメソッドだと思っているのですが どこかに定義が書かれてるわけではないんでしょうか
回答: Railsがルーティングに基づいて自動的に生成するヘルパーメソッドです。 参考: Rubyは非常に柔軟な言語であるため、動的にメソッドの作成や削除を行うことができます。`rails g scaffold memo`を実行するとconfig/routes.rbにmemoに関するルーティング設定が追加されます。きっとそれは、`resources memo`というものです。これはCRUDなアクセスをいくつか追加します。全てのルーティングパスは`rails routes`コマンドを実行することで確認できます。 ルーティングはあるパスにアクセスしたときに適切なコントローラーを呼び出すための定義ですが、それだけではなく、そのパス自身を取得するための_pathヘルパーメソッドおよび_urlヘルパーメソッドを提供するものがあります(_pathはパスだけ、_urlはフルのURL)。例えば、`resources memo`とすると`/memos/:id/edit`(`:id`部分には編集するメモの`id`が入ります)と言うパスが`memos#edit`というコントローラー#アクションになるというルーティングが追加されますが、同時に`edit_memo_path`というヘルパーメソッドも生成し、ビューにて`/memos/:id/edit`というパスを取得しやすくします。単にヘルパー内で`/memos/:id/edit`と書くこともできますが、もし間違って`/memo/:id/edit`と書いても、実際にそのビューでリンクをクリックしないと気付きません。しかし、メソッドであれば、メソッド名を間違えれば、ビューを表示する時点でエラーになりますし、メソッドさえ呼び出せれば間違ったパスを返す事も無いという利点があります。 その他、細かい点は、参考に挙げたRailsガイドを参考にしてます。