ポリモーフィックな belongs_to 関連付けを使用してモデルを作成するコントローラーを開発しています。それが属するモデルを見つけるために今私がしていることは次のとおりです:
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 がクラスを遅延ロードするという事実に問題があるのではないかと考えているため、これを見つけるには、初期化時にすべてのモデルを明示的にロードする必要があります。