2013-03-23 27 views
0

我生成的條件一個ActiveRecord,其中如下:ActiveRecord的查詢W /檢查空場

query = {:status => status} 

    if (limit) 
    query[:limit] = @vals['limit'].to_i 
    end 

    if (offset && limit) 
    query[:offset] = (offset - 1) * limit 
    end 

    rows = Review.all(query) 

這一切正常。我對評論的「狀態」進行過濾,如果傳入,我將填寫限制和偏移量。現在問題是我需要在評論內容字段中添加對「非空」的支票。 I.E. 和review.content!=「」 & & review.content!=零

我也看到了你可以這樣做

Review.were("review <> ''") 

其本身的作品,但我不知道如何整合到這我的上述命令。或者更改上面的命令以使用where語句而不是「all」語句。

+0

嘗試此Review.where(查詢)。凡(( 「審查<> ''」) – Amar 2013-03-23 19:02:37

回答

2

,直到你開始遍歷行我會寫的代碼類似

query = Review.where("status = ?", status).where("review <> '' AND review IS NOT NULL") 

if limit.present? 
    query = query.limit(limit) 
    if offset.present? 
    query = query.offset((offset - 1) * limit) 
    end 
end 

rows = query.all 

軌查詢對象不懶惰的評價,這樣你就可以建立查詢,沒有SQL是向數據庫發出

的替代品.where("review <> '' AND review IS NOT NULL")

.where("COALESCE(review, '') <> ''")