2016-11-13 53 views
0

我正在構建一個Rails應用程序,該應用程序允許用戶使用保存在服務類型實例中的用戶定義憑據調用許多Web服務之一。用戶將創建一個Service模型的實例,該模型has_one是另一個模型的實例(它定義了服務類型)。棘手的是有不同的服務類型。所以服務實例需要鏈接到許多不同的可能模型之一,但我不知道如何做到這一點。Rails:引用潛在其他模型列表之一的模型

例如服務模型,屬於一個用戶,將具有HAS_ONE僅參照下面的一類:

  • ServiceType1
  • ServiceType2
  • ServiceType3

我想知道如何將模型的參考字段作爲可選字段。

將在下面的工作?:

  • Service.reference - 有ServiceTypeX實例
  • Service.serviceType的ID - 選擇正確的ServiceTypeX模型

或可能是管理以某種方式與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 
相關問題