私はRuby on Railsアプリケーションを書いています。これには2種類のユーザータイプがあります(売り手と買い手を考えてみましょう)。私は認証を処理するためにdevise gemを使用しています。Ruby on rails - 2ユーザーのタイプ
私は3つの理由で単一テーブルの継承を使いたくありません:
1)私は自分のユーザーテーブルにたくさんの列を入れたくありません(私は売り手と買い手の両方のフィールドを私は分離売り手と買い手を維持する)私のデータベース
3にNULL値をたくさん持っている必要はありません一つのテーブル、およびそれらが異なるfiledsの多くを持つことになります)
2)は、パフォーマンススピード
私は、売り手と買い手のための2つの別々のモデルを作成することにしました。長い話が短い - それはいくつかの問題を引き起こした(すなわち、単一のフォームでログインを扱うことが困難で、 "プライベートメッセージ"のような単純なものに対して多態的な関連付けを使用し、コードDRYなどを維持する)。
したがって、ここに質問がある:
いくつかの共通フィールドを持つモデル(ユーザー)を作成して、deviseによる認証を簡単に処理し、belongs_toとhas_oneの関連付けで個別のモデル(売り手と買い手)に詳細情報を格納することをお勧めします。このようなもの:
class User < ActiveRecord::Base
has_one :seller
has_one :buyer
end
class Seller < ActiveRecord::Base
belongs_to :user, :conditions => "user_type= 'seller'"
end
class Buyer < ActiveRecord::Base
belongs_to :user, :conditions => "user_type= 'buyer'"
end
これは良い解決策ですか?それとも、単一のテーブル継承が良いアイデアだろうと思いますか?
どのような問題が発生する可能性がありますか?
各ユーザーのプロファイルページを表示するルートは何ですか?私に知らせてください - はをwebsite.com/sellers/idとあなたは私の問題のためのよりよい解決策を考えることができる場合が
をwebsite.com/buyers/idように私は何かを持っていると思います。
同じユーザーが[Rails - 2ユーザータイプのアプリケーション設計](http://stackoverflow.com/questions/9517406/rails-application-design-for-2-user-types)の可能な複製。 –