Rails монтируемый движок с изоляцией_namespace, но без префиксного пространства имен на таблицах
Есть ли способ настроить метод isolate_namespace
не использовать префиксные имена таблиц?
class Engine < ::Rails::Engine
isolate_namespace MyEngine
end
Кроме того, изолированный движок будет устанавливать свое имя в соответствии с пространством имен, поэтому MyEngine:: Engine.engine_name будет "my_engine". Он также установит MyEngine.table_name_prefix в "my_engine_", изменив модель MyEngine:: Article, чтобы использовать таблицу my_engine_articles. Изолированные документы для двигателей
При разработке прототипа я столкнулся с проблемой, когда мне нужны маршруты для использования изолированного шаблона пространства имен, но таблицы базы данных этого не делают. Это связано с тем, что монтируемый движок, который я пишу, имеет свою собственную базу данных.
Не хочу копать намного дальше, если это невозможно.
Ответы
Ответ 1
Немного вникал в кодовую базу Rails Engine, чтобы найти решение.
Если вы определяете метод для указания префикса имени таблицы (в /lib/my_engine.rb
), он будет использовать это вместо этого. Таким образом, установка возвращаемого нуля отлично работает.
require "my_engine/engine"
module MyEngine
# Don't have prefix method return anything.
# This will keep Rails Engine from generating all table prefixes with the engines name
def self.table_name_prefix
end
end