Ruby on rails ActiveRecord';救命!方法正在从数据库中删除我的对象
我一辈子都搞不懂这件事。我正在使用CanCan和InheritedResources。我想删除一个组,但撤销组中的用户(而不是从数据库中删除他们)。通过将用户上的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
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