我正在開發一個控制器,該控制器創建一個具有多態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延遲加載類,所以爲了能夠找到這個東西,我不得不在初始化時明確加載所有模型。