我遇到一些麻煩搞清楚活動記錄語法如下Postgres的查詢:轉換SQL語句的Active Record語法
SELECT *
FROM tracks
JOIN displays on displays.track_id = tracks.id
JOIN users on displays.user_id = users.id
WHERE user_id = 1
AND displays.display is true
AND tracks.likes_count > 200
上述作品上面的查詢,現在我想將其轉換ActiveRecord不同的語法,但得到的錯誤:
PG::SyntaxError: ERROR: syntax error at or near "'t'" LINE 1: ...ck_id" = "tracks"."id" WHERE (displays.display is 't', track...
Track.joins(:users, :displays).where('displays.display is ?, tracks.likes_count > ?, users.id = ?', true, 200, 1)
好像我做錯了與displays.display is True
聲明,但我已經試過無濟於事一些變化。
我正在使用Activerecord-4.2.0。
我將不勝感激。
'是[not] true'且'not [not] false'被認爲是後綴運算符(或者有些類似於特殊語法)。你不能參數化它們中的「true」/「false」部分。如果'display'列不能爲'NULL',則可以使用'displays.display =?'。 – pozs 2015-02-09 16:28:31
我看到,你不能參數化一個布爾值....我怎麼能參數化其他領域,仍然設置布爾值?我嘗試了一些你建議的不同變體,但沒有運氣。 – theartofbeing 2015-02-09 16:40:13
不,你可以(一般情況下)傳遞一個布爾參數,但你的情況('是true')是特殊的。 – pozs 2015-02-09 16:44:10