ActiveRecord查询w /检查空字段

时间:2013-03-23 18:59:45

标签: ruby-on-rails activerecord

我正在为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'语句。

1 个答案:

答案 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, '') <> ''")