2016-12-27 51 views
1

這就是模型的結構。獲取第二級或第三級的子值has_many rails

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) 

我可以創建幾個循環並獲得結果。但是有沒有一種有效的方法來做到這一點?

回答

2

查詢時加入表格。

爲了得到一套客房特定用戶:

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

安德烈,你有一個博客分享你的知識/經驗?你幾乎在每一個鐵軌/ activerecord相關的職位,你總是提供很好的解決方案 - )) – marmeladze

+1

@marmeladze謝謝你的讚美 - 我很高興知道我的幫助!但我還是noob,只是一點點noob,比那些,我回答他們的問題:)但也許有一天,我會開始一個博客;) –

+0

上面運行代碼 – Abhilash