如何查询以获取基于嵌套资源的所有用户?

时间:2011-09-02 16:33:53

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

假设:

Room (id, updated_at)
RoomMember (room_id, user_id)
User (id)

在rails中,如何在过去24小时内获取属于所有会议室的所有用户

由于

2 个答案:

答案 0 :(得分:2)

User.select('distinct users.*').joins(:rooms).where('rooms.updated_at > ?', 1.day.ago)

答案 1 :(得分:1)

假设您的模型如下:

class User
  has_many :room_members
  has_many :rooms, :through => :room_members
end

class RoomMember
  belongs_to :user
  belongs_to :room
end

class Room
  has_many :room_members
  has_many :users, :through => :room_members
end

您可以使用以下内容:

User.all(:select => "DISTINCT users.*",
   :joins => :rooms, :conditions => ["rooms.updated_at >=", 1.day.ago])