我正在努力做到这一点

User.find([23,45,68,123]).update_all(:is_active => true)

但我得到:

NoMethodError: undefined method `update_all' for #<Array:0x00000007493778>

正确的语法是什么?如果不需要的话,我宁愿不重复每一个.

推荐答案

find返回一个数组,因此不能使用update_all.

为了解决这个问题,我认为可以使用where,它返回ActiveRecord::Relation,所以update_all应该可以:

User.where(:id =>[23,45,68,123]).update_all(:is_active => true)

http://apidock.com/rails/ActiveRecord/Relation/update_all

我希望这有帮助...

Ruby-on-rails相关问答推荐

Rails 7通过引擎将方法自动加载到控制器中的方法

Rails Routing:在具有自己的路由的名称空间下组织路由

通过激励控制器正确更新Turbo帧信源

Rails 6升级没有加载Mongoid,这是一个问题

使用ImportMaps将HighLightJS添加到rails 7.1

在Rails中,如何将帮助器方法添加到属性/列?

使用has_many_through关联创建记录 – Ruby on Rails

Rails 100% 新手问题 - send() 方法

如何使用 Vim 插入 ERB 标签?

Rails 模型方法 self.与普通

Rails:如何小写非英文字符串?

禁用 RVM 或使用没有 RVM 安装的 Ruby?

具有 has_many 关联的 FactoryGirl build_stubbed 策略

如何将自定义路由添加到资源路由

批量查找 mongoDB 记录(使用 mongoid ruby​​ 适配器)

使用 ruby​​ on rails 活动记录插入多条记录

从 Rails 中的 ActiveRecord::RecordNotFound 救援

在 Rails 3 中突出显示当前页面的最佳方法? -- 有条件地将css类应用于链接

如何在不触及 updated_at 属性的情况下更新单个属性?

为什么 rails bootstrap 这么慢,我该怎么办?