我無法弄清楚我的生活。我正在使用CanCan和InheritedResources。我想刪除一個組,但是撤銷組中的用戶(不要從數據庫中刪除它們)。撤銷是通過在用戶上設置revoked
到true
來完成的。在我的測試中,開始時有2個用戶,還有一個組。ActiveRecord的保存!方法是從數據庫中刪除我的對象
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!
正在悄悄地刪除我的記錄。
CanCan和InheritedResources應該與控制器一起工作。目前尚不清楚您要展示的代碼。這是你的組模型嗎?你的組控制器? – davidrac
呃......對不起,控制器,忘了包含「控制器」 –
請向我們展示'User'模型。我懷疑有一個'default_scope',它正在干涉。您的用戶沒有被刪除,只是隱藏在默認範圍之內。 –