4

如果我将我的网站在逻辑上拆分为多个帐户(例如 acme.mywebsite.com、xyz.mywebsite.com),我如何实施act-as-taggable-on-steroids并让标签由当前帐户限定范围?

为了提供更多细节,如果我正在访问 acme,我不想看到来自 xyz 子域的标签。

我已经研究了 act-as-taggable-on,但仅当您想为同一模型使用不同类别的标签时才提供上下文。

4

2 回答 2

3

假设我理解您的问题,因为您有多个帐户,每个帐户都有自己的一组标签,这些标签可以应用于您的应用程序中调用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)

注意:您必须增加acts-as-taggable-on-steroids 提供的标签模型以添加以下内容。- 将每个标签链接到帐户的列。- 对帐户范围的唯一性验证。允许多个帐户具有相同的标签。

于 2009-10-20T05:33:17.667 回答
1

如果 Account 是您的模型,您可以将标记对象的帐户设置为所有者。文档:https ://github.com/mbleigh/acts-as-taggable-on#tag-ownership

然后让 Account 标记该对象。然后要查找所有标签,您可以要求所有者获取所有标签或标签。

于 2014-07-24T07:45:40.560 回答