Rails如何更新所有记录的列为零的记录?
问题描述:
我想为udtraekkesinfo不等于NULL或NIL的所有记录设置udtraekkes(datetime)为NULL。我的模型名称是Konkurrencer。Rails如何更新所有记录的列为零的记录?
如何更新轨道控制台中的konkurrencers记录?
答
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)
我曾尝试:Konkurrencer.update_all( “udtraekkes = NULL”,:udtraekkesinfo => NOT_EQ(无)) NoMethodError:用于主未定义的方法'NOT_EQ”:对象 – 2012-03-24 22:30:08
Konkurrencer.update_all(“udtraekkes = NULL “,”udtraekkesinfo 0“) - 试试这个 – railscard 2012-03-24 22:48:48
它应该是udtraekkes不等于零的地方,因为所有的记录都不是NULL。 – 2012-03-24 23:47:01