act_as_taggable_on_stereoids をアカウントごとにスコープするにはどうすればよいですか?
-
22-09-2019 - |
質問
Web サイトを論理的にアカウントに分割している場合 (例:acme.mywebsite.com、xyz.mywebsite.com) を実装するにはどうすればよいですか? ステロイド上でタグ付け可能なものとして機能する タグのスコープは現在のアカウントにありますか?
もう少し詳しく説明すると、acme にアクセスしている場合、xyz サブドメインからのタグを表示したくないのです。
act-as-taggable-on を調べましたが、 コンテクスト 同じモデルに異なるクラスのタグを使用する場合にのみ提供されます。
解決
私はあなたが呼び出しがacts_as_taggableことをアプリケーション内のすべてのモデルに適用することができ、タグの独自のセットで、各複数のアカウントを持っていることで、あなたの質問を理解と仮定。以下は、あなたが欲しいものを行う必要があります。
あなたはすべてのアクションへのサブドメインにアクセスできるようにアプリケーションコントローラに以下を追加することができます。
class ApplicationController < ActionController::Base
before_filter :getSubdomain
def getSubdomain
@current_subdomain.(self.request.subdomains[0])
end
end
あなたは、データベース内のサブドメインいくつかの方法にタグをリンクすると仮定すると、あなたはその後、名前のスコープを作成することができます。この例では、サブドメインがユーザー名であり、あなたのタグ付けモデルは、ユーザーに属している、あなたはその後、サブドメインに関連したものだけを選択するために、あなたのタグモデルに名前の範囲を使用することができることを前提としています。
class Tag < ActiveRecord::Base
...
named_scope :find_by_subdomain, labmda do |subdomain|
{ :joins => "users ON users.id = tags.user_id", :conditions => ["users.name = ?", subdomain] }
end
end
そして、サブドメインに関連付けられているユーザーによって作成された記事にタグを取得する:Posts.tags.find_by_subdomain(@subdomain)
NB:あなたは行為-AS-タグ付けできるオンステロイド以下を追加することにより、供給タグモデルを強化する必要があります。 - アカウントに各タグを連結するカラム。 - アカウントのスコープに一意性の検証。複数のアカウントが同じタグを持つことができます。
他のヒント
、あなたは所有者としてタグ付けされたオブジェクトのアカウントを設定することができます。 ドキュメント: https://github.com/mbleigh/acts-as-taggable -on#タグ、所有する
そして、オブジェクトをタグ付けするためにアカウントをお願いします。そして、すべてのタグを検索するには、アルタグやタギングを取得するには、所有者に依頼することができます。