Active Record を実装したモデルはデータベース上のレコードと一対一の関係になっているので、
データベース上に存在しないプロパティを追加したり、メソッドを追加したりするのは一般的でしょうか?
それともマナー違反ですか?
マナー違反の場合どう改善すればいいのでしょうか?
例えばPost
というモデルがあって、DB上では、posts
テーブルにはこの4つの値があるとしましょう。
- id
- title
- content
- url
Active Record を実装したモデルは、上記4つの値をプロパティでアクセスできるようになっています。
そこで、DB上存在しない:
- related_posts プロパティ
- has_related_post() メソッド
みたいなのPost
クラスに追加するのはマナー違反かどうかの質問です。
そもそもの話ですが、「モデル」はなぜ「モデル」という名が付いたのでしょうか?
そこが分からないと、「モデルでこういうことやっていいのか」の判断が常に下せないのです...
ただの「データの塊」オブジェクトだという認識ですが、どうも違うような気もします。データと関係のないこともさせてもいいのでしょうかね(上記のhas_related_post()
とか)?
すみません、「モデル(動詞:モデリング)」の定義がそもそも曖昧なので、文脈によっては解釈の仕方も変わってくると思うので、MVCという文脈でどう解釈すればいいのか、詳しい方、何方か教えて頂けると助かります!
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。