PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

rel dinamis tempat kueri sql

Pendekatan Anda sedikit salah karena Anda mencoba memecahkan masalah yang salah. Anda mencoba membuat string untuk diserahkan ke ActiveRecord sehingga dapat membuat kueri saat Anda seharusnya mencoba membuat kueri.

Saat Anda mengatakan sesuatu seperti:

Model.where('a and b')

itu sama dengan mengatakan:

Model.where('a').where('b')

dan Anda dapat mengatakan:

Model.where('c like ?', pattern)

bukannya:

Model.where("c like '#{pattern}'")

Menggabungkan kedua ide tersebut dengan self.instance_values Anda Anda bisa mendapatkan sesuatu seperti:

def query
  self.instance_values.select { |_, v| v.present? }.inject(YourModel) do |q, (name, value)|
    q.where("#{name} like ?", "%#{value}%")
  end
end

atau bahkan:

def query
  empties      = ->(_, v) { v.blank? }
  add_to_query = ->(q, (n, v)) { q.where("#{n} like ?", "%#{v}%") }
  instance_values.reject(&empties)
                 .inject(YourModel, &add_to_query)
end

Mereka berasumsi bahwa Anda telah memasukkan semua variabel instan ke daftar putih dengan benar. Jika belum maka Anda harus melakukannya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sumber fungsi ekstraksi postgresql

  2. Cara menggunakan nilai yang sama beberapa kali dalam pernyataan yang disiapkan jdbc postgresql

  3. Kendala Postgres memastikan satu kolom dari banyak ada?

  4. haruskah saya mengaktifkan kumpulan pernyataan c3p0?

  5. pg_dump database postgres dari server jauh ketika port 5432 diblokir