2016-08-17 10 views
1

私は次のモデルを持っているレールアプリケーションがあります。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

可能な複製(http://stackoverflow.com/questions/4047833/rails-3-select-with-include ) –

答えて

1

pluckメソッドは、モデル全体をロードせずに属性のみを読み込みます。それをチェックしてください:http://apidock.com/rails/ActiveRecord/Calculations/pluck

このようにそれを書き換えるようにしてください:[?Railsの3 - 含めると選択]の 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

関連する問題