2016-11-13 52 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 
相关问题