Rails3: как использовать реляционную алгебру для замены SQL-конструкций типа NOT и OUTER JOIN - PullRequest
1 голос
/ 07 июня 2010

Есть две модели Post и Comment. Я должен получить все сообщения, которые не имеют комментариев с конкретным тегом. Как я могу сделать это, используя новые функции Rails 3, такие как реляционная алгебра ( arel ).

SQL-решение должно быть примерно таким:

SELECT     `posts`.* FROM       `posts` LEFT OUTER JOIN `comments` ON `posts`.`id` = `comments`.`post_id`
WHERE    NOT (`comments`.`tag` = 'my_tag')

1 Ответ

1 голос
/ 10 июля 2010

Добавьте к вашему Gemfile:

gem 'meta_where'

и затем:

Post.includes(:comment).where(:comments => {:tag.not_eq => 'my_tag'})
...