Wie kann ich Umfang acts_as_taggable_on_stereoids durch Account?
-
22-09-2019 - |
Frage
Wenn ich meine Website logisch in Konten aufgeteilt (zB. Acme.mywebsite.com, xyz.mywebsite.com), wie kann ich implementieren Akt-as-markierbare-on-Steroiden und haben die Tags durch das Kontokorrent scoped?
Um etwas mehr Details geben, wenn ich Acme bin Zugriff Ich mag nicht, Tags aus xyz Sub-Domain sehen.
Ich habe in Akt-as-markierbare-on gesucht, aber die Kontext nur zur Verfügung gestellt, wenn Sie unterschiedliche Klassen von Tags für das gleiche Modell haben mögen.
Lösung
Unter der Annahme, verstehe ich, Ihre Frage, dass Sie mehrere Konten mit jeweils ihrem eigenen Satz von Tags, die zu jedem Modell in der Anwendung angewandt werden könnten, dass Anrufe acts_as_taggable. Folgendes sollte das tun, was Sie wollen.
Sie können die folgenden Anwendungssteuerung in den die Sub-Domain für alle Aktionen zugänglich zu machen.
class ApplicationController < ActionController::Base
before_filter :getSubdomain
def getSubdomain
@current_subdomain.(self.request.subdomains[0])
end
end
Angenommen, Sie einen Tag eine Sub-Domain verknüpfen einige, wie in Ihrer Datenbank haben, können Sie einen benannten Bereich erstellen. Dieses Beispiel geht davon aus, dass die Sub-Domain ein Benutzername und Ihr Tagging Modell gehört zu einem Benutzer, dann können Sie einen benannten Bereich auf Ihrem Tag-Modell die Sub-Domäne diejenigen relevant nur wählen verwenden.
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
Dann Tags auf Beiträge abzurufen, die vom Benutzer mit der Sub-Domain zugeordnet erstellt wurden: Posts.tags.find_by_subdomain(@subdomain)
Hinweis: Sie werden das Tag-Modell durch Akte-as-markierbare-on-Steroiden versorgt erweitern müssen, um die folgenden hinzuzufügen. - Eine Spalte jeden Tag auf ein Konto zu verknüpfen. - Die Einzigartigkeit Validierung Umfang auf Rechnung. mehr Konten ermöglichen, die gleichen Tags zu haben.
Andere Tipps
Wenn Konto ist ein Modell für Sie, Sie Konto des markierten Objekts als Eigentümer festlegen. Dokumentation: https://github.com/mbleigh/acts-as-taggable -on # tag-Eigentum
Und dann Konto bittet um das Objekt zu markieren. Dann alle Tags zu finden, können Sie den Besitzer fragen al e-Tags oder Markierungen zu erhalten.