如何使用ruby查询数据库?

时间:2013-04-23 21:07:50

标签: ruby-on-rails ruby database model

我已通过rails控制台确认此记录不存在。但是,当我运行此代码时,“它存在”会被打印到控制台。

我是如何使用ruby查询数据库的?

        if Companyavg.where(:company => 'goog', :word => 'baa')
            puts 'it exists'
        else
            puts 'doesnt exist'
        end

3 个答案:

答案 0 :(得分:3)

变化:

if Companyavg.where(:company => 'goog', :word => 'baa')

为:

if Companyavg.where(:company => 'goog', :word => 'baa').exists?

这比使用present?更有效,因为它可以运行优化查询以返回正确的结果。

您拥有的初始查询将始终是真实的,因为它返回ActiveRecord::Relation(简单来说,是一个懒惰的未触发查询)。

答案 1 :(得分:0)

尝试

Companyavg.where(:company => 'goog', :word => 'baa).empty?

问题是where调用正在返回一个查询,但它实际上并不会运行查询,直到它绝对必须。所以在这种情况下,你正在评估一个非零的非假对象的真值,因此根据Ruby的规则true

答案 2 :(得分:0)

这是因为where返回一个空关系。在ruby中只有nil和false语句被评估为false。例如0和“”(空字符串)计算为true。