Jadi saya melakukan kueri ke db dan saya memiliki array objek yang lengkap:
@attachments = Job.find(1).attachments
Sekarang saya memiliki array objek, saya tidak ingin melakukan kueri db lagi, tetapi saya ingin memfilter array berdasarkan Attachment
objek file_type
sehingga saya dapat memiliki daftar di attachments
mana jenis file itu 'logo'
dan kemudian daftar lain di attachments
mana jenis filenya adalah'image'
Sesuatu seperti ini:
@logos = @attachments.where("file_type = ?", 'logo')
@images = @attachments.where("file_type = ?", 'image')
Namun dalam memori, bukan kueri db.
ruby-on-rails
activerecord
joepour
sumber
sumber
partition
- contohnya di sini .Jawaban:
Coba:
Ini bagus:
tetapi untuk performa, Anda tidak perlu mengulang @attachments dua kali:
sumber
Jika keterikatan Anda
Ini akan menjadi array objek lampiran
Gunakan metode pilih untuk memfilter berdasarkan tipe_file.
Ini tidak akan memicu kueri db apa pun.
sumber
sudahkah Anda mencoba eager loading?
sumber
@attachments = Job.first.attachments
dieksekusi, Anda ingin mengulang@attachments
sementara itu Anda tidak ingin kueri db lagi. apakah ini yang ingin kamu lakukan?Anda dapat memfilter menggunakan mana
sumber
Saya akan melakukan ini sedikit berbeda. Susun kueri Anda untuk mengambil hanya yang Anda butuhkan dan pisahkan dari sana.
Jadi buat kueri Anda sebagai berikut:
Dan kemudian partisi data:
Itu akan mendapatkan data yang Anda cari dengan cara yang rapi dan efisien.
sumber