我正在为ActiveRecord生成条件,如下所示:
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. AND review.content!=''&& review.content!= nil
我读过你可以做类似
的事情Review.were("review <> ''")
这本身有效,但我不知道如何将其纳入我的上述命令。或者更改上面的命令以使用where语句而不是'all'语句。
答案 0 :(得分: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
rails查询对象做了延迟评估,所以你可以建立查询,在你开始迭代行之前不会向数据库发出sql
替代.where("review <> '' AND review IS NOT NULL")
.where("COALESCE(review, '') <> ''")