使用nil值查找属性的Rake任务

时间:2016-12-04 21:30:25

标签: ruby-on-rails ruby rake-task

我正在构建一个Rake任务来收集特征

的值为零的记录
namespace :updates do
  desc "Update from nil values"
  task :companies => :environment do
    nil_featured_companies = Company.where("featured = ?", nil)
    nil_featured_companies.each do |co|
      co.update_featured_to_false
    end
...

当我在rails控制台中检查它时,我什么都没收到。如果我修改查询以搜索错误值,我会收回一个集合

Company.where("featured = ?", false)

我想只获取特征值为nil的记录并将其更新为false。使用nil查找所有特征值的正确语法是什么?

4 个答案:

答案 0 :(得分:1)

使用

Company.where(featured: nil)

Company.where("featured is null")

答案 1 :(得分:1)

试试这样:

Company.where(featured: nil).each do |co|
   co.update_attribute(:featured, false)
end
  

ActiveRecord :: StatementInvalid:PG :: InFailedSqlTransaction:ERROR:当前事务已中止

意味着PG引发了异常,并且此连接中不允许进行未来的交易

答案 2 :(得分:1)

试试这个(你确定数据类型是布尔值,对吧?)

  Company.where(featured: nil).each do |each|
    each.update_attribute("featured", false)
  end

答案 3 :(得分:0)

使用:

Company.where("featured is ?", nil)