2011-11-28 53 views

回答

6

PostgreSQL不使用ISIS NOT一般比較,你想<>!=

where("event_id = ? AND status <> ?", event.id, "approved") 

<>應該在MySQL和SQLite以及工作時要比較對一個NULL除,那麼你必須隨處使用IS NULLIS NOT NULL

IS用於特殊的比較如IS NULLIS DISTINCT FROM,見PostgreSQL的手冊進行進一步細節的Comparison Operators部分。

如果你打算在Heroku上進行部署,你應該在PostgreSQL上進行開發(8.3爲共享數據庫,9.0爲專用數據庫)。 PostgreSQL比SQLite(和MySQL)更公平一點,沒有ORM可以完全隔離數據庫之間的差異。從SQLite/MySQL遷移到PostgreSQL時,GROUP BY的行爲是另一個常見問題,因此您可能需要檢查所有分組;另外,請檢查您如何處理字段數過長的字段,AFAIK SQLite會忽略您的大小限制,但是如果您嘗試超出列大小,PostgreSQL將大聲抱怨(並且MySQL將用純粹的警告截斷您的數據,除非您'已經把你的服務器設置爲嚴格模式)。

+1

+1對於在postgres上開發的記錄...這是一個培根保護程序。 – Webjedi

0
scope :unapproved, lambda { |event| 
    where("event_id = ?", event.id). 
    where("status != ?", "approved") 
} 
相關問題