0

マルチテナントアプリを実行するためにacts_as_tenant gemを使用しています。私は指示に従いました。サブドメインを使用しています。

application_controller.rbは持っています:

set_current_tenant_by_subdomain(:account, :subdomain)

Accountテナントとして利用しています。私のUserモデルでは、次のように呼び出しました。

acts_as_tenant(:account)

問題

サブドメイン (例: john.realestate.dev) を使用してアカウントにログインすると、すべて問題ありません (current_tenantつまり、john が設定されています)。

と呼ばれる別のモデルがPropertyあります。現在ログインしているテナント、つまり john が新しいプロパティを作成すると、そのレコードは他のすべてのユーザーに表示されます。ジョンだけが作成したレコードを表示できるようにします。

どこが間違っていますか?

私のモデルの関係は次のとおりです:-

Account-has_many :users

User-belongs_to :account

Property

4

2 に答える 2

3

Account(has_many :properties) と Property(Belongs_to :account) の間に関係を作成することで問題を解決しました。

次に、acts_as_tenant(:account) をプロパティ モデルに追加しました。プロパティ モデルに account_id を追加する移行を実行しました。

現在は、サブドメインに従って、ログインしているユーザーによって作成されたデータのみを対象としています。

ドキュメントからこのステートメントを理解するまで、宝石のドキュメントを何度も読み直して修正しました。

act_as_tenant では、各スコープ モデルに、そのスキーマをテナントにリンクする列が必要です。モデル宣言にacts_as_tenantを追加すると、そのモデルのスコープが現在のテナントに限定されますが、現在のテナントが設定されている場合のみです。

私の実装に関するアイデアや提案は大歓迎です。

于 2015-04-02T17:23:02.877 に答える