Как я могу ограничить act_as_taggable_on_stereoids по учетной записи?

StackOverflow https://stackoverflow.com/questions/1592562

Вопрос

Если мой веб-сайт логически разделен на аккаунты (например.acme.mywebsite.com, xyz.mywebsite.com), как реализовать действовать как помеченный на стероидах и имеют ли теги область действия текущей учетной записи?

Чтобы дать немного больше деталей: если я получаю доступ к acme, я не хочу видеть теги из поддомена xyz.

Я рассмотрел вариант «действовать как помечаемый», но контекст предоставляется только в том случае, если вы хотите иметь разные классы тегов для одной и той же модели.

Это было полезно?

Решение

Предполагая, что я понял ваш вопрос в том, что у вас есть несколько учетных записей, каждая из которых имеет свой собственный набор тегов, которые можно применить к любой модели в вашем приложении, которая вызывает act_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-tagable-on-steroids, чтобы добавить следующее.- Столбец, связывающий каждый тег с учетной записью.- Проверка уникальности для области действия учетной записи.Разрешение нескольким учетным записям иметь одинаковые теги.

Другие советы

Если учетная запись является для вас моделью, вы можете установить учетную запись помеченного объекта в качестве владельца.Документация : https://github.com/mbleigh/acts-as-taggable-on#tag-ownership

А затем попросите Аккаунт пометить объект.Затем, чтобы найти все теги, вы можете попросить владельца получить все теги или теги.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top