我创建了一个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路径?
答案 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