我正在开发一个控制器,该控制器创建一个具有多态belongs_to关联的模型。我现在在做什么来找到它所属的模型如下:验证Rails中的多态关联类型
def find_polymorphic_model(classes)
classes_names = classes.map { |c| c.name.underscore + '_id' }
params.select { |k, v| classes_names.include?(k) }.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
raise InvalidPolymorphicType
end
其中classes是关联的有效类型的数组。
这种方法的问题是我必须在控制器中记住哪些类型允许用于我创建的模型。
有没有办法找到某种多态性belongs_to关联允许哪些类型?或者,也许我这样做是错误的,我不应该让一个多态控制器暴露出来,而不将它嵌套在多态资源中(在路由器中)?
我也认为可能存在的问题是Rails延迟加载类,所以为了能够找到这个东西,我不得不在初始化时明确加载所有模型。