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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top