edit 2
Jika Anda menemukan ini, periksa kedua jawaban karena saya sekarang akan menggunakan petik untuk ini
Saya memiliki kumpulan data khusus yang cukup besar yang ingin saya kembalikan untuk di-echo-kan sebagai json. Satu bagian adalah:
l=Location.find(row.id)
tmp[row.id]=l
tapi saya ingin melakukan sesuatu seperti:
l=Location.find(row.id).select("name, website, city")
tmp[row.id]=l
tapi ini sepertinya tidak berhasil. Bagaimana saya membuat ini bekerja?
Terima kasih
edit 1 sebagai
alternatif, apakah ada cara agar saya dapat melewatkan array yang hanya berisi atribut yang ingin saya sertakan?
:limit
harus melakukan ini, atau:first
atau:last
atau apa pun, tergantung pada apa yang Anda inginkan. Dokumen referensi yang saya tautkan akan memberi tahu Anda bagaimana melakukan semua itu.memetik (nama_kolom)
Metode ini dirancang untuk melakukan pemilihan dengan satu kolom sebagai kueri SQL langsung. Mengembalikan Array dengan nilai dari nama kolom yang ditentukan Nilai memiliki tipe data yang sama dengan kolom.
Contoh:
Person.pluck(:id) # SELECT people.id FROM people Person.uniq.pluck(:role) # SELECT DISTINCT role FROM people Person.where(:confirmed => true).limit(5).pluck(:id)
lihat http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck
Rel yang diperkenalkan 3.2 dan seterusnya dan hanya menerima satu kolom. Di rel 4, ini menerima banyak kolom
sumber
Location.select([:name, :website, :city])
jika Anda meneruskannya sebuah arrayJawaban saya datang cukup terlambat karena saya adalah pengembang yang cukup baru. Inilah yang dapat Anda lakukan:
Location.select(:name, :website, :city).find(row.id)
Btw, ini Rails 4
sumber