Comment puis-je la portée acts_as_taggable_on stéroïdes par compte?
-
22-09-2019 - |
Question
Si j'ai mon site Web logiquement divisé en comptes (par exemple. Acme.mywebsite.com, xyz.mywebsite.com), comment puis-je mettre en œuvre act-as-tagable-sur-stéroïdes et ont les balises scope par le compte courant?
Pour donner peu plus de détails, si j'accède Acme Je ne veux pas voir les balises de sous-domaine xyz.
Je l'ai regardé en acte comme-tagable-on, mais le contexte est uniquement fourni si vous voulez avoir différentes classes de tags pour le même modèle.
La solution
En supposant que je compris votre question que vous avez plusieurs comptes ayant chacun leur propre ensemble de balises qui pourraient être appliquées à tout modèle dans votre application qui appelle acts_as_taggable. Ce qui suit devrait faire ce que vous voulez.
Vous pouvez ajouter ce qui suit au contrôleur d'application pour rendre le sous-domaine accessible à toutes les actions.
class ApplicationController < ActionController::Base
before_filter :getSubdomain
def getSubdomain
@current_subdomain.(self.request.subdomains[0])
end
end
En supposant que vous liez une balise à un sous-domaine d'une façon ou dans votre base de données, vous pouvez créer un champ nommé. Cet exemple suppose que le sous-domaine est un nom d'utilisateur et votre modèle de marquage appartient à un utilisateur, vous pouvez utiliser un champ nommé sur votre modèle d'étiquette pour ne sélectionner que celles qui concernent le sous-domaine.
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
Ensuite, pour récupérer les tags sur les postes qui ont été créés par l'utilisateur associé au sous-domaine: Posts.tags.find_by_subdomain(@subdomain)
NB: vous devrez augmenter le modèle d'étiquette fourni par des actes-comme-tagable-sur-stéroïdes pour ajouter ce qui suit. - Une colonne reliant chaque étiquette à un compte. - La validation unique à la portée de compte. Permettre à plusieurs comptes d'avoir les mêmes balises.
Autres conseils
Si compte est un modèle pour vous, vous pouvez définir compte de l'objet étiqueté en tant que propriétaire. Documentation: https://github.com/mbleigh/acts-as-taggable # tag -on propriété
Et puis demander compte de marquer l'objet. Ensuite, pour trouver tous les tags, vous pouvez demander au propriétaire d'obtenir al balises ou des marquages.