2016-04-27 4 views
0

Hier ein Ausschnitt-Code istWie funktioniert wo nicht in Schienen 3 Werken

Wip.where(status: "P").where("reason NOT IN ?", ['DOB_MISSING']) 

Dies funktioniert nicht.

Ich habe versucht, danach zu suchen und fand viele Fragen gestellt. Einige von ihnen haben dies vorgeschlagen, aber ich bin nicht sicher, wo ich falsch werde

Hier bin Einfügen ich einen Teil meiner Schienen c

[19] pry(main)> Wip.where(status: "P").where("reason NOT IN ?", ['DOB_MISSING']).count 
    (0.6ms) SELECT COUNT(*) FROM `wip` WHERE `wip`.`status` = 'P' AND (reason NOT IN 'DOB_MISSING') 
ActiveRecord::StatementInvalid: Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''DOB_MISSING')' at line 1: SELECT COUNT(*) FROM `wip` WHERE `wip`.`status` = 'P' AND (reason NOT IN 'DOB_MISSING') 
from /home/ritu/.rvm/gems/[email protected]/gems/rack-mini-profiler-0.9.7/lib/patches/db/mysql2.rb:20:in `query' 
+1

funktioniert nicht? irgendein Fehler? – CuriousMind

+0

@CuriousMind Ich habe den Fehler Teil hinzugefügt – aelor

Antwort

2

Es ist eine einfache Syntax-Fehler Problem:

where("reason NOT IN (?)", ['DOB_MISSING']) 

Alle IN Klauseln müssen von Klammern umgeben sein.

+0

Oh Kumpel du weißt nicht, wie viel Elend ich gerade war .. Danke für das Zeigen mir das Licht .. der Weg zur Erleuchtung :) – aelor

0

Sie können auch arel_table Methode verwenden:

restrict_arr = ['DOB_MISSING'] 
Wip.where(status: "P").where(Wip.arel_table[:reason].not_in(restrict_arr))