在定义依赖于另一个要设置的方法的虚拟setter方法时,看起来在哈希中设置的属性的顺序很重要.有没有办法围绕这个仍然大规模分配属性?
https://gist.github.com/3629539
编辑
实例中未显示的条件是检查关联对象是否存在.如果对象存在,请设置一个值.如果没有,请忽略传入的值.但是,我也使用accepts_nested_attributes_for.因此,属性哈希可以包含关联的属性.在这种情况下,对象将存在.
{:name => 'Fred', :nested_attributes => {:color => 'red'}}
Run Code Online (Sandbox Code Playgroud)
将不会设置名称,因为该模型将不存在.
{:nested_attributes => {:color => 'red'}, :name => 'Fred'}
Run Code Online (Sandbox Code Playgroud)
accepts_nested_attributes_for将构建一个嵌套实例,然后设置属性.当要设置名称时,实例将存在并且将设置嵌套属性.
我现在能想到的唯一解决方案是覆盖属性设置器......
def attributes=(attrs)
self[:dont_set_name] = attrs.delete(:dont_set_name)
super
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
939 次 |
| 最近记录: |