Подтвердить что ты не робот

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. Изолированные документы для двигателей

При разработке прототипа я столкнулся с проблемой, когда мне нужны маршруты для использования изолированного шаблона пространства имен, но таблицы базы данных этого не делают. Это связано с тем, что монтируемый движок, который я пишу, имеет свою собственную базу данных.

Не хочу копать намного дальше, если это невозможно.

4b9b3361

Ответ 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