在我的情况下,我得到一个资源的实例,我必须找出它的模型类是代表单数还是复数资源。
我挖掘了 Rails.application.routes 和它的实例变量,但没有找到解决这个问题的任何可能性。
更新:
我在 gem 中使用带有匿名模型实例的 polymorphic_path 助手,其中包括一些模块到模型和控制器中。最终目标是为 REST 控制器和模型提供一些自动化,并提供当前模型/实例及其祖先的路径/路由。
我最近的尝试看起来像这样:
Rails.application.routes.instance_variable_get(:@router).instance_variable_get(:@routes).instance_variable_get(:@named_routes).delete_if{|k,v| !k.match(/my_model_name_as_downcased_string_here/)}.values.map{|v| v.instance_variable_get(:@defaults)}.map{|h| h[:action]}
希望它能为复数模型带来行动 :index 和 :show 为单数模型。必须有一种方法可以利用内省来确定一个模型是否是一个单一的模型,我根本找不到问题。