0

1つの職業(デザイナー、モデル、写真など)を持つユーザーモデルがあります。各職業には特定の属性があるため、各職業には独自のテーブルがあります。

今、私のユーザーでは、ユーザーhas_one:professionと言いたいのですが、ここで、職業は写真、デザイナー、またはその他のものです。

私の最初のアイデアは、職業モデルをSTIとして使用することでしたが、これを行うと、実際の職業ごとにテーブルを作成できなくなります...

これをどのようにデザインしますか?

ありがとう、グレッグ

4

1 に答える 1

2

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
于 2012-12-10T19:25:47.593 に答える