質問: Rails5.1.3でMySQLを使用しアプリケーションプログラミングの勉強中です。少し前に別の質問での回答で 「rails5であれば、app/以下にあるファイルは自動でrequireしてくれます。」と回答をいただいたことがあります。 その時点ではあまり深く考えていなかったのですが、app/以下のファイルはアクセスした時点で読み込まれるということ なのでしょうか? それとファイルの実行についての質問です。(コントローラの実行) テーブルを複数作っています。customers_controller.rbでmemberテーブルのデータを取得する場合。 members_controller.rb、member.rbの内容は反映されているのでしょうか?反映されていない場合はどのように記述して 反映させたあとのデータを取得するのでしょうか? membersのデータを取得する前にmembers_controller.rbとmember.rbを実行しないといけないのでしょうか? その場合のコードはどういう記述になりますか? 前に、同じような質問をしましたが、初心者の私には難し過ぎる回答で混乱してしまいました。 単純に、customer_controller.rb で member_controller,member.rbの内容を反映したあとのデータを取得する 方法を教えていただけないでしょうか? 宜しくお願いします。
回答: > > app/以下のファイルはアクセスした時点で読み込まれるということなのでしょうか? > > > 環境や設定によって動作は違って、開発環境の場合は必要になった時に読み込まれる**オートロード**で動きます。一方、本番環境ではたいてい、**サーバ起動時点で**全ファイルを読み込む設定にします。 > > customers_controller.rbでmemberテーブルのデータを取得する場合。members_controller.rb、member.rbの内容は反映されているのでしょうか? > > > まず、`Member`クラスの方は、`members`を取得した時点で読み込まれます。一方、`MembersController`は**全く無関係**なので、コードが動くことはありません。 > > customer_controller.rb で member_controller,member.rbの内容を反映したあとのデータを取得する > > > 「`CustomersController`が`MembersController`のコードに依存する」という動作自体に問題があります。必要な部分を「モデル側に移す」「Concernとして切り出す」などして、コントローラー同士は独立して動作するようにしましょう。