我正在构建一个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查找所有特征值的正确语法是什么?
答案 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)