如果我的网站在逻辑上分为多个帐户(例如 acme.mywebsite.com、xyz.mywebsite.com),我该如何实现 act-as-taggable-on-steroids 并拥有当前帐户范围内的标签?
要提供更多细节,如果我正在访问 acme,我不想看到来自 xyz 子域的标签。
我已经研究了 act-as-taggable-on,但只有当您想要为同一模型使用不同类别的标签时,才会提供上下文。
最佳答案
假设我理解您的问题,因为您有多个帐户,每个帐户都有自己的一组标签,这些标签可以应用于您的应用程序中调用 acts_as_taggable 的任何模型。以下应该做你想做的。
您可以将以下内容添加到应用程序 Controller 以使所有操作都可以访问子域。
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 提供的标签模型以添加以下内容。 - 将每个标签链接到一个帐户的列。 - 帐户范围的唯一性验证。允许多个帐户具有相同的标签。
关于ruby-on-rails - 我如何按帐户确定 acts_as_taggable_on_stereoids 的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1592562/