如何按帐户范围调整acts_as_taggable_on_stereoids的范围?

时间:2009-10-20 05:03:18

标签: ruby-on-rails ruby acts-as-taggable

如果我的网站在逻辑上分成了帐户(例如acme.mywebsite.com,xyz.mywebsite.com),我该如何实施 act-as-taggable-on-steroids 并拥有当前帐户范围内的标签?

为了提供更多细节,如果我访问极致,我不想看到xyz子域中的标签。

我已经查看了act-as-taggable-on,但是如果你想为同一个模型提供不同类别的标签,那么只提供 context

2 个答案:

答案 0 :(得分: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)

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

答案 1 :(得分:1)

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

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