2016-11-13 18 views
0

私は、ユーザーがサービスタイプのインスタンスに保存されているユーザー定義の資格情報で多くのWebサービスの1つを呼び出せるようにするレールアプリケーションを構築しています。ユーザーは、サービスモデルのインスタンスを作成します。このインスタンスは、別のモデルのインスタンス(サービスタイプを定義しています)です。それが難しいのは、異なるサービスタイプがあるということです。したがって、Serviceインスタンスは、さまざまな可能なモデルのうちの1つにリンクする必要がありますが、これを行う方法がわかりません。Rails:潜在的な他のモデルのリストの1つを参照するモデル

例えばユーザに属するサービスモデルは、唯一以下のクラスのにhas_oneの参照を持っていますが:

  • ServiceType1
  • ServiceType2
  • ServiceType3

私はオプションフィールドとしてモデルを持つ参照フィールドを持つことができる方法を知りたい。

なり、次の仕事?:

  • Service.reference - 正しいServiceTypeXモデル

を選択したり、それを管理することができ - ServiceTypeXインスタンス

  • Service.serviceTypeのIDを持っていますどういうわけかhas_one関係を使って?

    将来的にはさまざまなサービスタイプを許可したいので、それぞれの参照フィールドを持つことが最良の方法ではありません。

    あらかじめ不明確な説明をしてお詫び...明確に説明するのは非常に難しいです。

  • +3

    これは私に(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)[ポリモーフィックな関連]のように聞こえます。 – spickermann

    +0

    それを読んで、それは正しい解決策であるように見えます。ありがとう! – pronoob

    答えて

    0

    コメントのためにspickermannに感謝します。多形性協会がトリックをしました!

    これは私がやったことです:

    class Service < ApplicationRecord 
        belongs_to :serviceable, polymorphic: true 
        ... 
    end 
    
    module ServiceTypes 
        class ServiceType1 < ApplicationRecord 
        has_one :service, as: :serviceable 
        end 
    end 
    
    関連する問題