2016-08-27 3 views
1

In meinem Rails-Projekt bekomme ich diesen Fehler, wenn ich versuche, Rating zu machen.PG :: UndefinedFunction: Fehler LIKE-Operator

Fehler:

PG::UndefinedFunction: ERROR: operator does not exist: integer ~~ integer LINE 1: ...dbacks" WHERE "feedbacks"."user_id" = $1 AND (rating LIKE 5)^HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. : SELECT COUNT(*) FROM "feedbacks" WHERE "feedbacks"."user_id" = $1 AND (rating LIKE 5)

Controller-Code:

unless @user.feedbacks.count == 0 
    @rating = ((@user.feedbacks.where("rating LIKE 5").count*5 + @user.feedbacks.where("rating LIKE 4").count*4 + 
    @user.feedbacks.where("rating LIKE 3").count*3 + 
    @user.feedbacks.where("rating LIKE 2").count*2 
[email protected]("rating LIKE 1").count).to_f/@user.feedbacks.count).round(2) 
else 
    @rating = 0 
end 

Kann mir bitte jemand helfen?

Antwort

0

The PostgreSQL documentation:

The LIKE expression returns true if the string matches the supplied pattern. (As expected, the NOT LIKE expression returns false if LIKE returns true, and vice versa. An equivalent expression is NOT (string LIKE pattern).)

Sie können nicht den LIKE Operator mit der ganzen Zahl verwenden. Bearbeiten Sie Ihre Abfrage. Etwas wie dieses:

"rating = 5" 
+0

Thx Sie! Es klappt. Ich habe diese "Bewertung wie 5" auf "Bewertung = 5" geändert. –

+0

Bitte schreibe keinen Kommentar wie diesen oder _Cool! _. Wenn dies Ihr Problem behebt, markieren Sie die Antwort als akzeptiert. Glückliche Kodierung! –

+0

Да я знаю) Просто на хотел сразу ставить отметку и просил подождать несколько минут с момента написания решения) –

Verwandte Themen