sta*_*p75 13 activerecord ruby-on-rails-3
直到今天我才知道write_attribute ...
看起来像update_attribute,虽然没有调用验证仍然调用:before_save回调,而write_attribute则没有.
这是两种方法的区别吗?
now*_*owk 15
update_attribute实际上是对DB进行物理调用.您将完整执行一条UPDATE语句.这就像update_attributes一列一样.
虽然write_attribute用于分配的属性写入模型基于AR列.如果要覆盖基于数据库的属性.
def first_name=(val)
write_attribute :first_name, val
end
# some_model.first_name => 'whatever val is'
def first_name=(val)
@first_name = val
end
# some_model.first_name => nil
Run Code Online (Sandbox Code Playgroud)
我没有write_attribute广泛研究过,但我收集基于Activerecord的模型处理基于数据库的列的赋值与略微不同于磨机访问器的运行.
Dou*_*rer 12
write_attribute当您要覆盖方法的默认访问器时使用.它本质上是语法糖self[:attribute]=(value).
查看"覆盖默认访问者"标题下的ActiveRecord :: Base文档.
如果您尝试使用文档重写示例update_attribute,我想它会以循环结束.
| 归档时间: |
|
| 查看次数: |
13516 次 |
| 最近记录: |