3

アパートメントgemを使ってマルチテナンシーアプリを作っています。私はそれをすべてセットアップしており、すべてが期待どおりに機能しています。また、Rails Internationalization (I18n) とアクティブなレコード バックエンドを使用して翻訳を保存しています。私の現在のセットアップ

変換表

class CreateTranslations < ActiveRecord::Migration[5.0]
  def change
    create_table :translations do |t|
      t.string :locale
      t.string :key
      t.text :value
      t.text :interpolations
      t.boolean :is_proc, default: false

      t.timestamps
    end
  end
end

Apartment.rb 構成

翻訳モデルを除外モデルのリストに追加して、すべてのテナントでグローバルになるようにしました

Apartment.configure do |config|

  # Add any models that you do not want to be multi-tenanted, but remain in the global (public) namespace.
  # A typical example would be a Customer or Tenant model that stores each Tenant's information.
  #
  config.excluded_models = %w{ User Workspace Translation }
end

私の翻訳テーブルには、英語 (デフォルト) とノルウェー語の両方の翻訳があります。メイン ドメインでは、すべてが英語とノルウェー語の切り替えで期待どおりに機能しますが、テナントを読み込むとすべての翻訳が失われます。コンソールでのデモ:

> Apartment::Tenant.switch! # switch to main tenant
> I18n.locale = :en # use English translations
> I18n.t('home.members_label')
  => "Show Members"

> Apartment::Tenant.switch! "elabs" # switch to a different tenant
> I18n.t('home.members_label')
  => "translation missing: en.home.members_label"

テナント環境で翻訳が欠落している理由がわかりません。私は、Excluded_models のリストに Translation モデルを含めることでうまくいくはずだと考えていましたが、どこかで何かが間違っているようです。手がかりはありますか?ありがとう

4

1 に答える 1