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