调用 'where' 返回什么?

What is returned by calling 'where'?

我有以下问题,让

 @post=Post.where(title: "title1")

如果 "title1" 存在或不存在,@post 应该是什么?如何检查 'where' 是否返回了任何元素?

在我的应用程序中,我刚刚调用了

  if(@post) .... else .... end

但它总是进入 else

尝试:

@post=Post.where(title: "title1").first

那么 @post 将是一个带有 title = "title1"Post 对象或 nil.

.where returns一个ActiveRecord_Relation对象,它是根据参数中的条件过滤当前关系的结果。

另一种方法是使用find_by,正如@D-side 在评论中所建议的那样:

@post = Post.find_by(title: "title1")