PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Rails 3.2 - недефиниран метод `where' за #

Във вашия първи ред вие успешно връщате ActiveRecordRelation обект в @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])

На този етап можете да приложите допълнителен .where(...) методи, условия или обхвати на @alarmsT за по-нататъшно изграждане на ARel израза и върнатите резултати.

След това обаче стартирате филтър върху тази релация, преобразувайки @alarmsT към екземпляр на 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

Вече не можете да изграждате ARel израза, тъй като Array не знае за вашия ARel .where(...) метод или някоя от вашите Alarm обхвати или атрибути на модела. Ето защо в кода по-долу получавате undefined method 'where' for #<Array:... грешка -- вие извиквате .where() върху екземпляр на Array; метод, който не съществува.

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

Можете да коригирате това, като не правите избора за филтриране по идентификатори на категории и вместо това използвате присъединяване. Изграждането на такова съединение (за проверка на съществуването на поне подмножество от стойности в свързана таблица/колона) е документирано доста на места, които лесно се намират чрез google и тук в 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. При вмъкване:референтният резултат на колона е двусмислен

  2. Създайте база данни, като използвате съхранена функция

  3. Нулевата стойност на Spring Data JPA в колона xxx нарушава ограничението за не-нула на серийна колона с postgresql

  4. Показване на PostGIS данни с Leafletjs

  5. Sqlalchemy и PostgreSql:как да зададете първичен ключ ръчно без конфликти в бъдеще?