Ruby on rails 3 Rails 3: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

如果我正确阅读了rails指南,那么返回false的before_destroy回调将通过发出回滚命令来停止正在销毁的对象

然而,当对象本身没有被移除时,我发现在该对象上处于HABTM关系的所有对象都被移除。我怎样才能阻止这种事情发生

以下是相应的代码块:

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数据库。

遇到同样的问题,你有没有找到解决方案/解释?遇到同样的问题,你有没有找到解决方案/解释?