我有这两个类:
class Dungeon < ApplicationRecord
has_one :room
...
end
class Room < ApplicationRecord
belongs_to :dungeon
...
end
我希望能够将Dungeon的一个Room对象替换为另一个,而不会实际删除或破坏Dungeon的原始Room对象。当我尝试使用update(room: r)
时,我得到了
ActiveRecord::RecordNotSaved: Failed to remove the existing associated room. The record failed to save after its foreign key was set to nil.
我需要做些什么才能简单地将Dungeon的一个房间替换为另一个房间?
答案 0 :(得分:4)
由于Rails 5 belongs_to
关联需要关联对象存在(请参阅:PR introducing this behavior)。
说:如果你想保留一个room
,虽然它没有关联dungeon
,你必须将belongs_to
定义更改为:
belongs_to :dungeon, optional: true