Railsでモデルを構築する方法について質問があります。例えば、ソーシャルネットワークtumblrを取ってみましょう。そこにはさまざまな方法で投稿できます。リンク、テキスト、写真、会話。今、私は似たようなことをしたいと思いますが、私は自分のアプリのモデリングにぴったりです。 Post
モデルを使用したいとします。だから、私のユーザーは、テキストだけ、または画像付きで投稿することができます。だから私もImage
モデルが必要だと思います。ユーザーがイベントをポストの形として投稿できるようにしたいとしましょう。だから私はEvent
モデルが必要だと思います。そういうわけで、将来、別のタイプの投稿について別のアイデアを持っているかもしれません(したがって、常に投稿に関連するはずです)。あなたはモデルと関係をどのように構築して簡単に拡張できるのでしょうか?私は、のEnumsのようなものを考えています。Railsでさまざまなタイプのモデル投稿
0
A
答えて
0
私は、たとえばposts
テーブルのすべての投稿の種類(画像、イベント...) のために一つのモデルPost
を使用します。
class Post < ActiveRecord::Base
enum post_type: [ :event, :image, :message]
validates :image_url, presence: true, if: ->{ image? }
validates :start_at, :end_at, presence: true, if: ->{ event? }
validates :title, :body, presence: true, if: ->{ message? }
end
:
create_table :posts do |t|
t.belongs_to :author
t.column :post_type, :integer, default: 0
t.column :title, :string
t.column :body, :text
t.column :image_url, :string
t.column :star_at, :datetime
t.column :end_at, :datetime
t.timestamps
end
モデルが各ポストタイプのための具体的な検証を持っています
この方法を選択する理由:
- Easy fetch allデータベースからのデータ。ユニオンなし、複数選択なし。
- キャッシング、オーナーのルールを簡単に管理できます。
- クリーンモデルを使用するすべてのポストタイプについて、モデルの懸念事項を使用します。
関連する問題
- 1. さまざまなタイプの投稿/記事のMongodbスキーマ
- 2. ソーシャルネットワークでさまざまなページタイプの投稿を処理する
- 3. Gettextブログではさまざまな言語が投稿されています
- 4. カスタム投稿タイプに投稿が表示されない
- 5. モバイルのさまざまなモデルのレイアウト
- 6. 以下のフォームにさまざまなフォームの値を投稿すると、
- 7. カスタム投稿タイプをクエリし、各カスタム投稿タイプから1つの投稿を返します
- 8. 投稿での扁平な平面モデル
- 9. RailsルートとさまざまなXMLテンプレート
- 10. カスタム投稿タイプWordPress
- 11. ループ内に投稿タイプとIDで1つの投稿を取得します
- 12. これはさまざまなタイプのコールバックでですか?
- 13. Knockout.JS:モデルからビューまでのさまざまな値
- 14. Wordpressカスタム投稿タイプのロール
- 15. Wordpressカスタム投稿タイプのカスタムクエリ
- 16. Wordpressのカスタム投稿タイプ - カスタムフィールド
- 17. Rails Putと投稿
- 18. ページ全体がajax [rails]でも投稿されました
- 19. カスタム投稿タイプを使用する投稿IDではなくパーマリンクのID
- 20. iPhone SDKで利用できるさまざまなタイプのCATransitionタイプ
- 21. '_id'フィールドのないタイプのオブジェクトを投稿しますか?
- 22. さまざまなノードのトップ投稿をどのように照会できますか?
- 23. カスタム投稿タイプの各投稿に番号を割り当てますか?
- 24. 管理者がRailsで承認した後の投稿投稿
- 25. Sparkのさまざまな結合タイプは何ですか?
- 26. Djangoでさまざまなタイプのユーザーを登録する
- 27. RailsのSQL並べ替えの投稿最近の投稿投稿
- 28. Railsの問題がusers_controllerに投稿されました。
- 29. フィールドがさまざまなタイプのクラスを参照できるように私のモデルを構成します
- 30. カスタム投稿タイプの最新の投稿を表示する
なぜ、複数のモデルを使用するのではなく、すべてのタイプに1つのモデルを使用する方が良いのか説明できますか? – Sylnois
は答えに理由を追加しました –