我定义了User
模型和Message
模型:
使用用户:
has many: messages
和消息:
belongs_to: user
我知道如何获取用户消息:
@users = User.all
@users.messages
但是如何让所有拥有消息的Users
和所有没有消息的用户?感谢
答案 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)')