我无法想象我的生活。我正在使用CanCan和InheritedResources。我想删除一个组,但撤消该组中的用户(不从数据库中删除它们)。通过在用户上将revoked
设置为true
来完成撤销。在我的测试中,开头有2个用户,还有一个用户组。
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
为什么我的用户被删除了?在这一切结束时,我没有组,也没有用户! .save!
没有引发异常,我也尝试了if user.save
,它返回true。我曾尝试使用和不使用super
,所以我认为它与InheritedResources无关。在我的小组模型中,我有:
has_many :users
没有:dependent => ":destroy"
。这里发生了什么?我感到惊讶和困惑,save!
正默默地删除我的记录。
答案 0 :(得分:0)
从上述情况来看,我不清楚为什么会发生这种情况......
尝试使用user.update_column :revoked, true
代替user.revoked = true
和user.save!
。这将保存它而不会回调,这可能(可能?)干扰某些事情。