現在、スポーツプロフィールをモデル化しようとしています。各選手は、それぞれのスポーツごとに異なるプロファイルを持ち、それぞれのスポーツの独自性についてそのドキュメントに参加しています。たとえば、プレーヤーのBob。 BobにはBasketballProfileとSoccerProfileがあります。 AliceはBaseballProfileとSoccerProfileを持つことができます。異なるDB列を持つ類似モデルの継承
batting_hand、pitching_hand、shooting_hand、ダンク、ほんの数例では、私が追加したいだろうと属性です。
私はSingle Table Inheritance and Polymorphic Associationを調べましたが、データベースに存在するnullの数のために追加の属性を持つモデルではないようです。
class Player< ActiveRecord::Base
has_and_belongs_to_many :Profiles
end
class Profile< ActiveRecord::Base
belongs_to :Player
end
class BasketballProfile < Profile
end
class BaseballProfile < Profile
end
どのように似ていますが、それは追加のデータベース列を持つモデルをモデル化するのでしょうか? DB列を追加して同様のモデルを継承できますか? BasketballProfileとBaseballProfileはどちらもポジションを持っていますが、一方はbatting_handを持ち、もう一方はダンクを持っています。
は、私はあなたのクラスのためにDBの行の空のフィールドを持つ気にしない場合を除き、助けにはなりませんだけではBaseballProfile、SoccerProfile、BasketballProfileなど
私はもともと同じテーブルに入れようと計画していました。あなたは、多形性の関連を逆転させるでしょうか? https://gist.github.com/runemadsen/1242485 –
ええ、私はそれを多形性の関連と呼んでいると思います。あなたはテーブル上に空のフィールドを持たずに、同じテーブルにそれらを置くことはできません。しかし、それらを持つことはあなた次第です。そのようにすれば、欠点を知ることができます。 – Leito