国境の南

Ruby, Railsメイン

MountableEngineで使うtableにprefixを付けたくない時

Mountable Engineで使うテーブルは、Mountable Engineと同じ名前の接頭語(例えばdashboardというEngineならdashboard_check_flagsみたいな)を付けるのが仕様となってます。

Additionally, an isolated engine will set its own name according to its namespace, so MyEngine::Engine.engine_name will return “my_engine”. It will also set MyEngine.table_name_prefix to “my_engine_”, meaning for example that MyEngine::Article will use the my_engine_articles database table by default.

ここの接頭語を変えたいときは、table_name_prefixを上書きして、nilや任意のprefixを見るようにすればよいです。

mengine/lib/mengine.rb

require "mengine/engine"

#tableのデフォルト接頭語を外す
module Mengine
  def self.table_name_prefix
  end
end

#以下のようにすれば接頭語はadminになる
def self.table_name_prefix
  'admin_'
end

当然こんな設定しないでrailに乗ったほうが良さそうですが。

参考

Rails::Engine