1

Rails アプリケーションに懸念事項を使用しています。私はさまざまな種類のユーザーを持っているので、loggable.rb心配しています。

私の懸念では、

included do 
        has_one :auth_info 
    end

懸念を含むすべてのユーザーが auth_info テーブルと関連付けられるためです。

問題は、auth_info テーブルにどの外部キーを入れる必要があるかということです。

例えば

私は3種類のユーザーを持っています:

  1. お客様
  2. 売り手
  3. ビジター

顧客しかいない場合、テーブルスキームにフィールドを配置します

id_customer

しかし、私の場合は?

4

2 に答える 2

0

これは、ポリモーフィックな関連付けで解決できます(そして懸念を解消します)。

class AuthInfo < ActiveRecord::Base
  belongs_to :loggable, polymorphic: true
end

class Customer < ActiveRecord::Base
  has_one :auth_info, as: :loggable
end

class Seller < ActiveRecord::Base
  has_one :auth_info, as: :loggable
end

class Visitor < ActiveRecord::Base
  has_one :auth_info, as: :loggable
end

これで、次を取得できます。

customer.auth_info # The related AuthInfo object
AuthInfo.first.loggable # Returns a Customer, Seller or Visitor

を使用rails g model AuthInfo loggable:references{polymorphic}してモデルを作成するか、2 つの列の移行を手動で作成できます。詳細については、ドキュメントを参照してください。

于 2015-06-08T18:03:23.783 に答える