こんにちは、私のプロジェクトには興味深い要件があります。has_one
どちらか一方のクラスであるが、継承のない関係が必要です。それが唯一の方法であれば、継承を回避できますが、2 つの関連付けられたレコードは完全に異なるデータを持ち、まったく関連していません。
私が把握する必要があるのは、次のようなものです。
# 1. Foo never belongs to anything.
# 2. Foo MUST have one assigned sub-record for validity.
# 3. Foo can only have either Bar or Baz assigned.
# 4. Bar and Baz have only ONE common property, and aren't
# related in either data or implementation.
class Foo < ActiveRecord::Base
# Attributes: id, name, value
has_one :assignment, :foreign_key => 'assigned_to', :readonly => true
# Could really use an :object_type for has_one here...
end
class Bar < ActiveRecord::Base
# Attributes: name,...
end
class Baz < ActiveRecord::Base
# Attributes: name,...
end
または のいずれかFoo
のタイプの 1 つの割り当てがあります。それらは共通の列を 1 つしか共有しないので、おそらくそこから親オブジェクトを作成できます。ただし、共通のオブジェクトから継承する場合 (実際に含まれるデータがオレンジとリンゴである場合)、レコードのテーブルを作成する必要がありますか? レコードが抽象的なレコードであるが、子レコードがそうでない場合、おそらくそれを回避できますか?Bar
Baz
ここまで来れば私の難しさはお分かりいただけると思います。私は RoR にかなり慣れていませんが、これまでのところ気に入っています。これを回避する方法があると確信していますが、それが何であるかを理解できない場合は気が遠くなるでしょう。