3

私の現在のセットアップは、railscast 389-multitenancy-with-postgresql によるマルチテナント アプリです。

複数のスキーマ間の移行を処理するための優れたサポートがあるため、主にアパートメントの宝石を使用するようにセットアップを移行しようとしています。

私が抱えている問題は、cancan と rolify の宝石を使用して、ロール モデルにこの結合テーブルを持つことです:users_roles

role.rb
has_and_belongs_to_many :users, :join_table => :users_roles

除外モデルのアパートメント gem 構成に含めたいのは、この結合テーブルです。これらのモデルは、グローバル (パブリック) スキーマに残るように指定されています。これが私の現在の設定です

apartment.rb
config.excluded_models = ["User", "Tenant", "Role" ]

除外モデルに関するアパートのサイトによる と、モデル名の文字列表現が標準になっていることに注意してください

モデルではなく単に結合テーブルである場合、users_roles テーブルを exclude_models リストに含めるにはどうすればよいでしょうか?

4

2 に答える 2

4

rolify とアパートメントの gem を組み合わせるために私が見つけた方法は、あなたが行ったように結合モデルを除外し、publicスキーマを含めて rolify で結合テーブル名を指定することです。

# apartment.rb

Apartment.configure do |config|
  config.excluded_models = %w{User Tenant Role UsersRole}

  # ...
end


# user.rb

class User < ActiveRecord::Base
  rolify role_join_table_name: 'public.users_roles'

  # ...
end
于 2015-02-01T00:19:00.947 に答える
0

Apartment を使用していませんが、とに切り替えhabtmてもらえますか?has_manybelongs_to

つまり、次のようになります。

# table 'users'
class User < ActiveRecord::Base
  has_many :user_roles 
  has_many :roles, :through => :user_roles

  # ...rest of class...
end

# table 'roles'
class Role < ActiveRecord::Base
  has_many :user_roles
  has_many :users, :through => :user_roles

  # ...rest of class....
end

# table 'user_roles'
class UserRole < ActiveRecord::Base
  belongs_to :user
  belongs_to :role

  # ...rest of class...
end

そして、apartment.rb で:

config.excluded_models = ["User", "Tenant", "Role", "UserRole" ]
于 2013-08-19T18:09:16.880 に答える