Rails 3 найти родителей, у которых нет ребенка - PullRequest
7 голосов
/ 04 июля 2011

В отношениях один-ко-многим без счетчика кэша, как мне найти родителей без ребенка?

user.rb

has_many :pages

page.rb

belongs_to :user

Я пробовал

User.includes(:pages).where("pages.user_id is NULL")

Это создает проблемы в MySQL.

Ответы [ 3 ]

15 голосов
/ 04 июля 2011

Попробуйте

User.joins("left join pages on pages.user_id = users.id").where("pages.user_id is null")
0 голосов
/ 27 января 2013

Я верю, что что-то вроде

 User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")

может также работать ...

0 голосов
/ 04 июля 2011

Один путь будет

User.where("(SELECT COUNT(*) FROM pages WHERE pages.user_id = users.id) = 0")

Но я не уверен, насколько (не) эффективно это будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...