So unten meine Modelle sind:Active Abfragen über mehrere verbindet
post.rb
class Post < ActiveRecord::Base
has_many :taggings
has_many :tags, through: :taggings
has_many :collectables
has_many :collections, through: :collectables
end
tagging.rb
class Tagging < ActiveRecord::Base
belongs_to :post
belongs_to :tag, counter_cache: :posts_count
end
tag.rb
collectable.rb
class Collectable < ActiveRecord::Base
belongs_to :post
belongs_to :collection, counter_cache: :posts_count
end
collection.rb
class Collection < ActiveRecord::Base
has_many :collectables
has_many :posts
end
Eine Sammlung viele Beiträge hat, und ein Beitrag viele Tags hat. Jetzt versuche ich eine Suchleiste zu erstellen, die nach Collections von Posts suchen, die bestimmte haben Tags (tag.name
ist der Suchbegriff). Zum Beispiel hat Collection 1 einen Post mit dem Tag #cat. Wenn der Benutzer nun nach "Katze" sucht, wird Sammlung 1 in den Ergebnissen angezeigt. Ich bin nicht sicher, wie die Abfrage aussehen sollte, um dies zu ermöglichen.
def self.search(search)
Collection.joins(:posts) ... ?
end
'Collections.joins (Beiträge:: Tags) .where (Tags: {name: search_term})' – omnikron