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

Rails 3.2 - metode tidak terdefinisi `where' untuk #

Di baris pertama, Anda berhasil mengembalikan ActiveRecordRelation objek di @alarmsT

# Extracts those alarms that are ACTIVE and have something in common with the tittles
@alarmsT = Alarm.activated.where("keyword in (?)", [@header.title_es, @header.title_en, @header.title_en])

Pada titik ini Anda dapat menerapkan .where(...) tambahan additional metode, kondisi, atau cakupan di @alarmsT untuk lebih membangun ekspresi ARel dan hasilnya kembali.

Namun, Anda kemudian menjalankan filter pada relasi ini, mengonversi @alarmsT ke instance Array

# Extracts alarms when Header has at least the same categories as an alarm
@alarmsT = @alarmsT.select do |alarm| 
   @header.category_ids.all?{|c| alarm.category_ids.include? c }
end

Anda tidak dapat lagi membangun ekspresi ARel, karena Array tidak tahu tentang .where(...) ARel Anda metode, atau salah satu Alarm . Anda cakupan atau atribut model. Inilah sebabnya mengapa dalam kode di bawah ini Anda mendapatkan undefined method 'where' for #<Array:... kesalahan -- Anda memanggil .where() pada instance Array; metode yang tidak ada.

@alarmsF = [] 
@header.events.each do |e|
  @alarmsF =  @alarmsF + @alarmsT.where("alarms.location LIKE ?", e.town)
end

Anda dapat memperbaikinya dengan tidak melakukan pilih untuk memfilter berdasarkan id kategori dan sebagai gantinya menggunakan gabungan. Membangun gabungan semacam itu (untuk memverifikasi keberadaan setidaknya subset nilai dalam tabel/kolom terkait) didokumentasikan cukup banyak di tempat-tempat yang mudah ditemukan melalui google dan di sini di StackOverflow.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengubah port server kontainer postgres di Docker Compose

  2. Bagaimana Anda membuat PyPy, Django dan PostgreSQL bekerja bersama?

  3. Desain database temporal, dengan twist (live vs draft rows)

  4. postgres - dengan rekursif

  5. Postgres - cara mengenkripsi kolom dan datanya