私は私の人生のためにこれを理解することはできません。CanCan と InheritedResources を使用しています。グループを削除したいが、グループ内のユーザーを取り消したい (データベースからは削除しない)。失効は、ユーザーに設定revokedすることによって行われtrueます。私のテストでは、最初は 2 人のユーザーと 1 つのグループがいます。
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!静かに記録を削除していることに驚き、混乱しています。