例えば以下のような3つのモデルの階層があるとします。(関連は全て1対多)
・「ユーザー」
・ユーザーに紐づく**「プロジェクト」**
・プロジェクトに紐づく**「チャットルーム」**
そして今、このアプリの「チャット一覧ページ」を開いているとします。
この一覧ページのテーブルに、このチャットの案件の管理者名を表示したいのですが、普通にやるとこうなるかと思います
ruby
1chat.project.user.full_name
質問というのは、上のような状況に対して、どのようにデメテルの法則を応用したらいいのかということです。
アプローチとしては以下の三つを思いつきました。
Chat
モデルにプロジェクトの管理者名フィールドを作るProject
モデルにuser_full_name
メソッドを作り、Chat
モデルにproject_user_full_name
メソッドを作るChat
モデルを直接User
に紐づける
二つ目のアイデアは具体的にはこんな感じです。
ruby
1class Project 2 def user_full_name 3 user.full_name 4 end 5end 6 7class Chat 8 def project_user_full_name 9 project.user_full_name 10 end 11end
場面によるとは思いますが、どのアプローチが一番スマートなのでしょうか?
デメテルの法則の捉え方が間違っている可能性もありますので、その場合はご指摘いただけると幸いです。
よろしくお願いします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/11 02:30