Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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 on rails ActiveRecord';救命!方法正在从数据库中删除我的对象_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails ActiveRecord';救命!方法正在从数据库中删除我的对象

Ruby on rails ActiveRecord';救命!方法正在从数据库中删除我的对象,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我一辈子都搞不懂这件事。我正在使用CanCan和InheritedResources。我想删除一个组,但撤销组中的用户(而不是从数据库中删除他们)。通过将用户上的reversed设置为true来完成撤销。在我的测试中,一开始有两个用户,一个组 class GroupsController < InheritedResources::Base load_and_authorize_resource def destroy p User.all # shows the cor

我一辈子都搞不懂这件事。我正在使用CanCan和InheritedResources。我想删除一个组,但撤销组中的用户(而不是从数据库中删除他们)。通过将用户上的
reversed
设置为
true
来完成撤销。在我的测试中,一开始有两个用户,一个组

class GroupsController < InheritedResources::Base
  load_and_authorize_resource

  def destroy
    p User.all # shows the correct value, 2!

    @group.users.each do |user|
      user.revoked = true
      p User.all # still shows 2 on the first loop iteration
      user.save!
      p User.all # shows 1 on the first iteration! The user was deleted?!
    end

    super # InheritedResources call to destroy the group
end

没有
:dependent=>“:destroy”
。这是怎么回事?我对
保存感到惊讶和困惑正在悄悄删除我的记录。

从上面的上下文来看,我不清楚为什么会发生这种情况


尝试使用
user.update\u列:reversed,true
而不是
user.reversed=true
user.save。这将在没有回调的情况下保存它,回调可能(可能?)会干扰某些内容。

CanCan和InheritedResources应该与控制器一起工作。不清楚您显示的是什么代码。这是你的团队模式吗?你的小组管理员?嗯。。。对不起,控制器,忘记包含“控制器”,请向我们展示
用户
型号。我怀疑它上面有一个
默认\u范围
,它正在干扰。您的用户没有被删除,只是从默认范围中隐藏。仍然删除记录。知道update_列仍然删除记录有帮助吗?好吧,抱歉,这意味着我的直觉是错误的,它与回调无关。。。正如Ryan Bigg所建议的那样,您可能需要提供更多的信息——它可能不是默认的作用域,但可能在您发布的内容之外发生了一些事情。此外,您可能希望直接查看数据库,以查看项目是否确实存在。
has_many :users