1つの職業(デザイナー、モデル、写真など)を持つユーザーモデルがあります。各職業には特定の属性があるため、各職業には独自のテーブルがあります。
今、私のユーザーでは、ユーザーhas_one:professionと言いたいのですが、ここで、職業は写真、デザイナー、またはその他のものです。
私の最初のアイデアは、職業モデルをSTIとして使用することでしたが、これを行うと、実際の職業ごとにテーブルを作成できなくなります...
これをどのようにデザインしますか?
ありがとう、グレッグ
1つの職業(デザイナー、モデル、写真など)を持つユーザーモデルがあります。各職業には特定の属性があるため、各職業には独自のテーブルがあります。
今、私のユーザーでは、ユーザーhas_one:professionと言いたいのですが、ここで、職業は写真、デザイナー、またはその他のものです。
私の最初のアイデアは、職業モデルをSTIとして使用することでしたが、これを行うと、実際の職業ごとにテーブルを作成できなくなります...
これをどのようにデザインしますか?
ありがとう、グレッグ
has_one
アソシエーションをaに反転し、belongs_to
ポリモーフィックアソシエーションを使用します。モデルコードは次のようになります。
class User < ActiveRecord::Base
belongs_to :profession, :polymorphic => true
end
# similar code for other professions
class Designer < ActiveRecord::Base
has_one :user, :as => :profession
end
移行は次のようになります。
change_table :users do |t|
t.references :profession, :polymorphic => true
end