我的用户模型有很多"状态":
class User
has_many states
class State
belongs_to user
现在,我想通过每个用户查找具有该状态的所有用户...
state = State.last
# I want to get all the users where state appears in ANY user's user.states
User.where(state IN user.states.. )
任何建议都将不胜感激!
答案 0 :(得分:1)
一种方法是使用联接来获取具有状态的用户:
User.joins(:states).where(state: 'some_type_of_state')
另一种方法是抓取具有特定状态的所有用户ID,然后查询这些用户:
user_ids = State.where(state: 'some_type_of_state').pluck(:user_id)
users = User.where(id: user_ids)
最后一个查询通常也不会执行。