如果你仅仅想检查一条记录是否存在,可以使用 exists? 方法。这个方法会像 find 方法一样查询数据库,但是它返回的是 true 或者 false 。
Client.exists?(1)
exists? 方法可以接受多个 id 作为参数,但是注意只要任何一条记录存在它都会返回 true 。
Client.exists?(1,2,3) 或者 Client.exists?([1,2,3]}
直接在一个 model 或者 relation 实例上调用不带参数的 exists? 方法也是可以的。
Client.where(:first_name => ‘Ryan’).exists?
上面的例子中,如果至少有一个 first_name 为 ‘Ryan’ 的 client 记录存在,那就会返回 true ,否则就返回 false 。
Client.exists?
如果 client 表为空,就返回 false ,否则返回 true 。
你也可以使用 any? 或者 many? 来检查一个 model 或者 relation 的存在性。
- model
Post.any?
Post.many?
- 已定义的作用域
Post.recent.any?
Post.recent.many?
- relation
Post.where(:published => true).any?
Post.where(:published => true).many?
- association
Post.first.categories.any?
Post.first.categories.many?