如果我的网站在逻辑上分成了帐户(例如acme.mywebsite.com,xyz.mywebsite.com),我该如何实施 act-as-taggable-on-steroids 并拥有当前帐户范围内的标签?
为了提供更多细节,如果我访问极致,我不想看到xyz子域中的标签。
我已经查看了act-as-taggable-on,但是如果你想为同一个模型提供不同类别的标签,那么只提供 context 。
答案 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标记该对象。然后,要查找所有标签,您可以要求所有者获取标签或标签。