PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

rails động nơi truy vấn sql

Cách tiếp cận của bạn hơi sai khi bạn đang cố gắng giải quyết vấn đề sai. Bạn đang cố gắng tạo một chuỗi để giao cho ActiveRecord để nó có thể tạo một truy vấn khi bạn chỉ cần cố gắng tạo một truy vấn.

Khi bạn nói điều gì đó như:

Model.where('a and b')

điều đó cũng giống như nói:

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

và bạn có thể nói:

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

thay vì:

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

Kết hợp hai ý tưởng đó với self.instance_values của bạn bạn có thể nhận được một cái gì đó như:

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

hoặc thậm chí:

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

Những điều đó giả định rằng bạn đã đưa tất cả các biến phiên bản của mình vào danh sách cho phép một cách chính xác. Nếu bạn chưa có thì bạn nên làm.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng pyspark để kết nối với PostgreSQL

  2. Sự khác biệt giữa kiểu dữ liệu Bit và Boolean trong PostgreSQL

  3. Cách truy vấn mảng số nguyên postgres trong mùa xuân

  4. Cập nhật bảng và thêm dữ liệu trong Di chuyển Laravel 5

  5. PostgreSQL CHẨN ĐOÁN BẬT với các ĐẶT HÀNG KHÁC BỞI