使用activerecord进行结果检查

时间:2016-12-20 10:54:45

标签: ruby-on-rails postgresql activerecord

当我们检查一个活动记录结果是否为空时,将是什么    有更多表现的方式。

pc_count = Property.select("id").where('property_category_id = ?', 5).limit(1)

if pc_count.blank?
  #
end

if pc_count[0]
  #
end

我尝试过两种方式 pc_count.blank? pc_count [0] ,因为我听说空白会收取额外的查询,但当我尝试了控制台我看不到任何额外的电话

2 个答案:

答案 0 :(得分:1)

不,你的两个版本都不会产生另一个查询。

这取决于您使用pc_count做了什么:

1。)您稍后在某个地方使用id,然后使用您的任何一种方法(我更喜欢.blank?

2。)你只需要这个检查。然后我会做

 Property.select("id").where('property_category_id = ?', 5).limit(1).count

因为没有创建模型而您只能测试count == 0

答案 1 :(得分:1)

尝试存在

就像。

  Person.exists?(5)
  Person.exists?('5')
  Person.exists?(:name => "David")
  Person.exists?(['name LIKE ?', "%#{query}%"])
  Person.exists?

参考:http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-exists-3F