如何查看用户是否有帖子

时间:2014-06-03 16:04:12

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我定义了User模型和Message模型:

使用用户

has many: messages

消息

belongs_to: user

我知道如何获取用户消息:

 @users = User.all
 @users.messages

但是如何让所有拥有消息的Users和所有没有消息的用户?感谢

2 个答案:

答案 0 :(得分:2)

您可以使用.includes方法:

users_without_messages = User.includes(:messages).where(messages: { id: nil })

users_with_messages = User.includes(:messages).where('messages.id IS NOT NULL')

答案 1 :(得分:1)

SQL-ish回答:

  

但是我怎样才能让所有拥有消息的用户

User.where('id IN (SELECT DISTINCT(user_id) FROM messages)')
  

以及所有没有消息的用户?感谢

User.where('id NOT IN (SELECT DISTINCT(user_id) FROM messages)')