Ruby on rails 3 Rails 3:HABTM、销毁和销毁前回调
如果我正确阅读了rails指南,那么返回false的before_destroy回调将通过发出回滚命令来停止正在销毁的对象 然而,当对象本身没有被移除时,我发现在该对象上处于HABTM关系的所有对象都被移除。我怎样才能阻止这种事情发生 以下是相应的代码块:Ruby on rails 3 Rails 3:HABTM、销毁和销毁前回调,ruby-on-rails-3,jrubyonrails,destroy,has-and-belongs-to-many,Ruby On Rails 3,Jrubyonrails,Destroy,Has And Belongs To Many,如果我正确阅读了rails指南,那么返回false的before_destroy回调将通过发出回滚命令来停止正在销毁的对象 然而,当对象本身没有被移除时,我发现在该对象上处于HABTM关系的所有对象都被移除。我怎样才能阻止这种事情发生 以下是相应的代码块: class UserGroup < ActiveRecord::Base # Associations has_and_belongs_to_many :users, :join_table => "user_group
class UserGroup < ActiveRecord::Base
# Associations
has_and_belongs_to_many :users, :join_table => "user_group_membership"
attr_protected :is_default
# Callbacks
before_destroy :destroy_associations
def destroy_associations
if self.is_default?
errors.add(:base,"You can't delete the default")
return false
end
self.users.clear
end
end
class用户组“用户\u组\u成员”
属性受保护:是否为默认值
#回调
销毁前:销毁关联
联合会
如果self.u是默认值?
错误。添加(:base,“您不能删除默认值”)
返回错误
结束
self.users.clear
结束
结束
现在,当我在“is_default”组上调用destroy时,我得到了添加到基的正确错误消息,UserGroup对象没有被销毁,但是:users集合中的每个关联都被清除
我知道代码“self.users.clear”永远无法访问-那么为什么我会丢失我的HABTM收藏
如果有帮助的话,我正在使用JRuby 1.9和mssql数据库。遇到同样的问题,你有没有找到解决方案/解释?遇到同样的问题,你有没有找到解决方案/解释?