Rails如何更新所有记录的列为零的记录?

问题描述:

我想为udtraekkesinfo不等于NULL或NIL的所有记录设置udtraekkes(datetime)为NULL。我的模型名称是Konkurrencer。Rails如何更新所有记录的列为零的记录?

如何更新轨道控制台中的konkurrencers记录?

我想你需要update_all方法。 Documentation

+0

我曾尝试:Konkurrencer.update_all( “udtraekkes = NULL”,:udtraekkesinfo => NOT_EQ(无)) NoMethodError:用于主未定义的方法'NOT_EQ”:对象 – 2012-03-24 22:30:08

+0

Konkurrencer.update_all(“udtraekkes = NULL “,”udtraekkesinfo 0“) - 试试这个 – railscard 2012-03-24 22:48:48

+0

它应该是udtraekkes不等于零的地方,因为所有的记录都不是NULL。 – 2012-03-24 23:47:01

Konkurrencer.update_all({udtraekkes: nil}, "udtraekkesinfo IS NOT NULL")

+0

只需将您的quiry设置为udtraekkes NULL的所有记录:( – 2012-03-24 22:40:49

+0

问题是,它也更新了它是空的地方:( – 2012-03-24 22:54:17

在Rails 4.0.13, 我这个语法测试,可能会在轨道3

Model.where(conditions).update_all(:column_name=> nil) 
where conditions are filtered condition to fetch the each record and update_all will operate on those record, you can update one or more column based on your requirement. 

满足您需求的代码会为你做同样的。

Konkurrencer.where(:udtraekkes=> nil).update_all(:udtraekkes=> nil)