我有两个has_one
关系模型:
class Entity < ActiveRecord::Base
has_one :location, as: :locatable, dependent: :destroy
accepts_nested_attributes_for :location, allow_destroy: true
...
default_scope {joins(:location).includes(:location)}
...
# has a properties 'name' and 'url'
end
class Location < ActiveRecord::Base
belongs_to :locatable, polymorphic: true
# has a property named 'address'
end
我注意到,通过表单对name
模型的url
或Entity
属性的更改将导致关联的Location
记录被删除然后被插入。这是一个不太理想的行动。
**编辑**
在进一步测试中,我注意到这些设置与SQL策略无关:
polymorphic
加入allow_destroy: true
dependent: :destroy
- 除了在Locations
表default_scope
问题:
Entity
属性会导致更改Location
模型?DELETE
/ INSERT
,而不是UPDATE
?答案 0 :(得分:3)
解决方案:将update_only: true
添加到accepts_nested_attributes_for
:
class Entity < ActiveRecord::Base
...
accepts_nested_attributes_for :location, update_only: true
来源: