J'ai un modèle Author
que has_many :posts
, has_many :comments
il peut aussi être taggable
sur la base des modèles Tagging
et Tag
que j'ai posté ci-dessous.requête polymorphes pour les balises sur plusieurs objets
class Tagging
belongs_to :tag
belongs_to :taggable, polymorphic: true
end
class Tag
has_many :taggings
has_many :posts, through: :taggings, source: :taggable, source_type: 'Post'
has_many :authors, through: :taggings, source: :taggable, source_type: 'Author'
end
Voici ce que mon modèle Author
ressemble.
class Author
has_many :posts
has_many :comments
has_many :taggings, as: :taggable
has_many :tags, through: :taggings
end
Il y a quelques types de requêtes que je suis tentée, mais toutes mes tentatives jettent des erreurs, et je ne peux pas envelopper la tête autour de la façon d'obtenir les données que je veux. Fondamentalement, je voudrais exécuter des requêtes pour les scénarios suivants:
- Disons que j'ai un objet auteur
@author = Author.find(1)
. Comment procéder pour regrouper tous les commentaires et posts associés par tags créés par l'auteur? Je ne suis pas sûr de savoir comment construire cet objet AR. - Comment trouver tous les commentaires et articles d'un auteur qui partagent un tag spécifique? Pour cela j'ai essayé
@taggable = @author.tagging.joins(:tag).where(tags: {name: @tag_name})
, mais je ne peux pas faire ça.
Merci
Merci pour cette réponse. Malheureusement, je suis Je n'utilise pas acts_as_taggable et j'utilise les classes personnalisées que j'ai définies ci-dessus.J'espérais éviter d'utiliser cette gemme à des fins d'apprentissage.Toutes les idées comment faire ces requêtes sans la gemme? – jewnbug97
Eh bien ... il y a des raisons pour lesquelles les gemmes sont faites. ..pour faciliter notre vie parce que quelqu'un a déjà fait cet effort que vous le faites à nouveau .... :). Vous devez faire une requête sql en utilisant taggable_type/id pour vérifier ... – Milind
J'ai mis à jour mon anwser..check it out en mettant en œuvre vos modifications ... – Milind