今までrails製のアプリを作って来たりはしたのですが、恥ずかしい話コントローラーやビューにメソッドを書いていました。
変な話view側でUser.find...
のようにモデルを直接viewで参照してたりしてました。
railsにはfat model、slim controllerのような思想があるようで、自身は全くこの思想に従ってなかったことを最近痛感してます。
上述の理由のため、またActiveRecordが大変優秀なこともあり、modelクラスにはhas_many
、belong_to
のように最低限のリレーションを記述する以外殆ど処理を書いたことがありません。
しかし調べるとビジネスロジックはmodelに記述し、更に設計の話に入るとビジネスロジック以外の処理はサービスクラスなるものを作るべきだとも見ました。
そこで質問なのですが、確認の意味を込めてとはなるのですがmodelクラスやserviceクラスのようなクラスに書いた処理をコントローラーで参照するにはどうすれば良いのでしょうか。
rubyのアクセス修飾子を書かない場合のクラスはpublicになるはずだったので、普通にコントローラー側で
@user = User.new
のようにしてインスタンス化して呼び出せば良いのでしょうか?
またrails g modelなりscaffoldすればモデルクラスは出来ると思うのですが、サービスクラスのようにrailsのデフォルトにはないようなクラスを作る場合はどの階層に作れば良いのでしょうか?
長い間疑問だったのですが、publicはどこからでも参照できると良く入門書で目にしますが、どこからでもの範囲が全く分かりません。階層が違っても、同一のディレクトリ内ならどこでも参照できるって解釈でよろしいでしょうか?
前置きがなくなりましたが質問をまとめると
・モデルクラスやサービスクラスをコントローラーで参照するにはどうすればよいか
・railsでデフォルトで作成されない自前のサービスクラスはどの階層に作ればよいか
・publicはどこからでも参照できるらしですが、どこからどこまでの範囲かが分からない
という3点です。
よろしくお願い致します
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。