我的应用中的用户模型类似于
belongs_to :account, :polymorphic => true, :dependent => :destroy
还有一些特殊帐户类型,例如Admin或Editor
class Admin < ActiveRecord::Base
has_one :user, :as => :account, :dependent => :destroy
end
class Editor < ActiveRecord::Base
has_one :user, :as => :account, :dependent => :destroy
end
是否有任何干净的方法可以将用户类型从编辑器更改为管理员?如果我做了像
这样的事情admin = Admin.new
User.first.account = admin
user.save
admin.save
数据库中的编辑器类型仍有一个旧条目。
答案 0 :(得分:0)
使用:dependent => :destroy
只会在对象本身被销毁时删除关联的对象。您不会破坏用户记录,只是更改其中一个属性,因此永远不会触发此功能。
要自己销毁它,请执行类似
的操作user = User.first
user.account.destroy
user.account = Admin.create
user.save