2016-08-17 102 views
1

我有一個rails應用程序,我有以下模型。rails包含查詢加載包含模型的全部數據

BookingHotel 
    has_many :hotel_picture_partners, through: :hotel_pictures 
    has_many :booking_hotel_partner_details, dependent: :destroy 

BookingHotelPartnerDetail 
    belongs_to :booking_hotel 

HotelPicturePartner 
    belongs_to :hotel_picture, dependent: :destroy 

我有一個查詢如下

@booking_hotel_partner_details = BookingHotelPartnerDetail.unscoped.select(:id, :booking_hotel_id, :partner_booking_hotel_id).includes(booking_hotel: :hotel_picture_partners) 

,因爲它爲加載模型包含的所有數據這使得在壓力下的記憶。

有沒有辦法只能從booking_hotels加載選擇字段& hotel_picture_partners表?

另外我想獲得一個activerecord數組作爲響應。

+0

的可能的複製[Rails 3中 - 選擇具有包括哪些?(http://stackoverflow.com/questions/4047833/rails-3-select-with-include ) –

回答

1

pluck方法僅加載屬性,不加載整個模型。檢查它:http://apidock.com/rails/ActiveRecord/Calculations/pluck

嘗試重寫它像這樣: BookingHotelPartnerDetail.unscoped.select('booking_hotels.id as bh_id', 'hotel_picture_partners.id as hpp_id').joins(booking_hotel: :hotel_picture_partners)

+0

我想加載包含的模型,但採摘會給我一個數組 – RamanSM

+0

檢查更新的答案 – AndreyS

+0

這似乎是正確的安德烈。這不會加載內存中的所有關聯記錄嗎? – RamanSM