У запроса базы данных Rails 3 есть много сквозных ссылок - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть сообщения таблица и теги таблица, объединенная с помощью тегирования стол (Рельсы 3)

Я хотел бы найти ключевое слово в поле Сообщений * name *, а также любые связанные теги.

class Post < ActiveRecord::Base             
    has_many :taggings, :dependent => :destroy
    has_many :tags, :through => :taggings

class Tag < ActiveRecord::Base
    has_many :taggings, :dependent => :destroy
    has_many :posts, :through => :taggings

class Tagging < ActiveRecord::Base
    belongs_to :post
    belongs_to :tag



var = "word"
Post.where("name LIKE ?","%#{var}%")

Это будет искать в поле имени, но я не знаю, с чего начать поиск сообщений с тегом, соответствующим "var"?

Нужно ли делать 2 отдельных поиска, один для сообщений и один для тегов, или они могут быть каким-то образом объединены в один поиск?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011
Post.includes(:tags).where(["posts.name LIKE (?) AND tags.tag LIKE (?)", "%#{var}%", "%#{var}%"])
0 голосов
/ 04 февраля 2011

Это должно работать как минимум в Rails 3

Post.joins(:tags).where('tags.name LIKE ?', "%#{var}%")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...