iva*_*van 1 ruby-on-rails associations ruby-on-rails-3
我有两节课,Master和Slave.该Master班HAS_ONE slave的Slave类属master.
给定两个关联对象,master_a以及slave_a(slave_a属于哪个master_a),如何在不破坏slave_a数据库的情况下取消链接?我基本上需要"解放" slave_a.我试过了master_a.slave.delete,slave_a从数据库中摧毁了.
我也试过master_a.slave.update_attribute(:master_id, nil),但下次master_a.save打电话,它会重新连接它们.这是否表示我正在忽略的回调(其中大师班有很多),或者我只是使用错误的工具来完成工作?
编辑:我应该指定,我不想销毁任何一个对象,只有这两个特定实例之间的链接.此外,真正的模型实际上并不称为主模型和奴隶模型,这只是我正在使用的一个说明性示例.
这是因为master和slave对象在内存中的保存方式.即使您已经更新了从站,主站仍然认为从站与之关联,因为关联的从站对象仍然保留在内存中(这通常更有效).重新加载主服务器时,关联将消失.所以,如果你在控制台中这样做,你会发现这样的事情:
master = Master.find(123)
=> <master object>
master.slave.update_attribute(:master_id, nil)
=> true
master.slave
=> <slave object>
master.reload
OR
master = Master.find(123)
master.slave
=> nil
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |