Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在批量更新时使用Sequel Gem返回更新的记录_Ruby_Sequel_Sequel Gem - Fatal编程技术网

Ruby 如何在批量更新时使用Sequel Gem返回更新的记录

Ruby 如何在批量更新时使用Sequel Gem返回更新的记录,ruby,sequel,sequel-gem,Ruby,Sequel,Sequel Gem,我正在使用gem批量更新MySql中的用户 users = Users.filter(:id => ids).all raise if users.nil? updated_users = Users.filter(:id => addon_ids).update({deleted: 1, moderator_id: moderator_id}) p updated_users # => 3 根据, “更新[和删除]应返回受影响的行数…” 因此,上述行为是预期的,但我的问题

我正在使用gem批量更新MySql中的用户

users = Users.filter(:id => ids).all
raise if users.nil?

updated_users = Users.filter(:id => addon_ids).update({deleted: 1, moderator_id: moderator_id})
p updated_users
# => 3
根据,

“更新[和删除]应返回受影响的行数…”

因此,上述行为是预期的,但我的问题是,如何让Sequel gem返回更新的记录,而不是受影响记录的数量

我期待这种行为:

users = Users.filter(:id => ids).all
raise if users.nil?

updated_users = Users.filter(:id => addon_ids).update({deleted: 1, moderator_id: moderator_id})
p updated_users
# => [#<Users @values={:id=>1, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>2, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>3, :moderator_id=>"testuser", :deleted=>1}>]
users=users.filter(:id=>ids)。全部
如果用户为0.nil,是否提高?
updated_users=users.filter(:id=>addon_id)。update({已删除:1,版主\u id:版主\u id})
p更新的用户
#=>[#1,:版主id=>“testuser”,:deleted=>1}>,#2,:版主id=>“testuser”,:deleted=>1}>,#3,:版主id=>“testuser”,:deleted=>1}>]

好吧,这就是DBs返回的内容,所以Sequel做了开发人员希望它做的事情。而是这样做:

users = Users.where(:id => ids)
raise if users.empty?

updated_users = Users.where(:id => addon_ids)
updated_users.update({deleted: 1, moderator_id: moderator_id})
p updated_users
# => [#<Users @values={:id=>1, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>2, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>3, :moderator_id=>"testuser", :deleted=>1}>]
users=users.where(:id=>ids)
如果用户为空,是否引发?
更新的用户=用户。其中(:id=>addon\u id)
已更新用户。更新({已删除:1,版主\u id:版主\u id})
p更新的用户
#=>[#1,:版主id=>“testuser”,:deleted=>1}>,#2,:版主id=>“testuser”,:deleted=>1}>,#3,:版主id=>“testuser”,:deleted=>1}>]

通过这种方式,您不会将受影响的行数分配给
更新的\u用户

好吧,这就是DBs返回的结果,所以Sequel做了开发人员希望它做的事情。而是这样做:

users = Users.where(:id => ids)
raise if users.empty?

updated_users = Users.where(:id => addon_ids)
updated_users.update({deleted: 1, moderator_id: moderator_id})
p updated_users
# => [#<Users @values={:id=>1, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>2, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>3, :moderator_id=>"testuser", :deleted=>1}>]
users=users.where(:id=>ids)
如果用户为空,是否引发?
更新的用户=用户。其中(:id=>addon\u id)
已更新用户。更新({已删除:1,版主\u id:版主\u id})
p更新的用户
#=>[#1,:版主id=>“testuser”,:deleted=>1}>,#2,:版主id=>“testuser”,:deleted=>1}>,#3,:版主id=>“testuser”,:deleted=>1}>]

通过这种方式,您不会将受影响的行数分配给
更新的\u用户

对于可能仍在寻找该行的用户,这取决于您的数据库引擎,您可以使用
返回

updated_users = Users.returning.filter(:id => addon_ids).update({deleted: 1, moderator_id: moderator_id})
p updated_users
# => [#<Users @values={:id=>1, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>2, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>3, :moderator_id=>"testuser", :deleted=>1}>]
updated\u users=users.returning.filter(:id=>addon\u id).update({已删除:1,版主\u id:版主\u id})
p更新的用户
#=>[#1,:版主id=>“testuser”,:deleted=>1}>,#2,:版主id=>“testuser”,:deleted=>1}>,#3,:版主id=>“testuser”,:deleted=>1}>]

文档:

对于可能仍在寻找此文档的人,根据您的数据库引擎,您可以使用
返回

updated_users = Users.returning.filter(:id => addon_ids).update({deleted: 1, moderator_id: moderator_id})
p updated_users
# => [#<Users @values={:id=>1, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>2, :moderator_id=>"testuser", :deleted=>1}>, #<Users @values={:id=>3, :moderator_id=>"testuser", :deleted=>1}>]
updated\u users=users.returning.filter(:id=>addon\u id).update({已删除:1,版主\u id:版主\u id})
p更新的用户
#=>[#1,:版主id=>“testuser”,:deleted=>1}>,#2,:版主id=>“testuser”,:deleted=>1}>,#3,:版主id=>“testuser”,:deleted=>1}>]
文件: