0

私は2つのモデルを持っています

事業と代表

企業または代表者がサインアップすると、「当社についてどのように知りましたか?」というオプションのリストが表示されます。

発見方法は動的であるため、管理者はビジネスまたは代表者が私たちを発見できる方法を追加できます. たとえば、管理者は「Google 経由」、「友人を通じて」、「別の代表者を通じて」などのオプションを追加できます。各検出タイプは、ビジネスまたは代表者、またはその両方のいずれかになります。

discovery_type モデルをどのようにモデル化すればよいか、どのような関係を持たせるべきか、次のようなことを考えていました

Schema : 
table: discovery_types
name: string
type: string(can be one of 'business','representative', 'both')

class DiscoveryType< ActiveRecord::Base
  has_many :businesses
  has_many :representatives
end

class Business< ActiveRecord::Base
  belongs_to :discovery_type
end

class Representative< ActiveRecord::Base
  belongs_to :discovery_type
end

私はこの上記のスキームに自信がありません。誰でも問題を指摘でき、より良い方法を提案することができます..

また、いずれかの列にインデックスを追加する必要がありますか?

4

1 に答える 1

1

編集: ポリモーフィック アソシエーションではありません。その通りです。これは逆の関係です。

これは、あなたが望む関係のために働くはずです -

class DiscoveryType< ActiveRecord::Base
  has_many :discoveries
end

class Discovery < ActiveRecord::Base
  belongs_to :discovery_type
end

class Business < Discovery
end

class Representative < Discovery
end

type列をdiscovery_typesRailsに残しておくと、自動的に使用されます

于 2012-05-30T12:46:17.973 に答える