私は私の人生のためにこれを理解することはできません。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!
静かに記録を削除していることに驚き、混乱しています。