获得第二或第三级的子值has_many rails

时间:2016-12-27 05:13:52

标签: ruby-on-rails ruby activerecord

这就是模型的结构。

User has_many :properties

Property has_many :rooms

Room has_many :bookings

Booking belongs_to :Room

booking有一个名为check_in的表格属性。因此,为了获得用户的所有预订房间,我可以在下面进行

创建一个房间数组并循环遍历每个房间     客房= []

然后为每个房间做下面的代码

这适用于从房间级别查询

room.bookings.where("check_in == ?", Time.zone.now.beginning_of_day) 

我可以创建几个循环并获得结果。但是有一种有效的方法吗?

1 个答案:

答案 0 :(得分:2)

查询时加入表格。

为特定用户获取一组房间:

Room.joins(property: :user)
    .where(
      users:    { id: id_of_particular_user },
      bookings: { check_in: Time.zone.now.beginning_of_day }
    )