Модель запроса Activerecord для пустой связи

#sql #ruby #ruby-on-rails-3 #activerecord

#sql #ruby #ruby-on-rails-3 #activerecord

Вопрос:

У меня есть следующие классы / отношения:

 #post.rb
belongs_to :user

#user.rb
has_many :posts
  

Мне нужно сделать что-то вроде этого:

 scope :has_posts, joins(:posts).where('posts is not empty')
  

или что-то вроде:

 User.where('posts is not empty')
  

Каков правильный синтаксис для запросов к отношениям? Могу ли я сделать это эффективно без использования кэша счетчиков?

Ответ №1:

в user.rb:

 scope :has_posts, :conditions => "users.id IN (SELECT user_id FROM posts)"
  

в контроллере:

 User.has_posts