如何创建未知的rails引擎多态记录的url路径?

时间:2015-05-30 11:43:54

标签: ruby-on-rails ruby-on-rails-4

我创建了一个rails(4)应用程序,它嵌入了2个独立的引擎。其中一个引擎定义了一个多态关联,它以主应用程序和第二个引擎中的模型为目标。

module Engine1
  class Engine1Model < ActiveRecord::Base
    belongs_to :testable, polymorphic: true  
  end
end

module Engine2
  class Engine2Model < ActiveRecord::Base
  end
end

class MainAppModel < ActiveRecord::Base
end

在Engine1ModelsController视图(show / index)中,我想创建一个指向相关模型的链接。当您知道记录来自哪个域时,您可以这样做:

polymorphic_path([main_app, record1.testable])

polymorphic_path([engine2, record2.testable])

但问题在于我不知道模型的起源。我如何创建有效的URL路径?

1 个答案:

答案 0 :(得分:0)

我创建了这个帮手:

module Engine1
  module ApplicationHelper
    def external_polymorphic_path(record)
      engine_name = record.class.name.deconstantize.underscore
      engine_name = 'main_app' if engine_name.empty?
      send(engine_name).polymorphic_path(record))
    end
  end
end