sat*_*yam 8 ruby ruby-on-rails
我的数据库中有一个表是房子,有很多字段,如"颜色","价格".如何在更新后仅保存特定字段
如果我有这个,
@ house.colour = newcolour
@ house.save
它将保存所有其他字段,包括house.colour和house.price
(我的情况下,价格应该以编程方式同时更新颜色,但不应保存.只有house.colour应保存在数据库中)
我试着做
@ house.colour = newcolour
@ house.colour.save
但它显示我的错误
是否只能保存@ house.colour的值?
谢谢你的任何建议
Dan*_*man 22
您可以使用update_attributes更新一组精确的字段.
@house.update_attributes(:colour => newcolour)
Run Code Online (Sandbox Code Playgroud)
您可以使用update_attribute更新单个字段.
@house.update_attribute(:colour, newcolour)
Run Code Online (Sandbox Code Playgroud)
Den*_*nis 10
有两种方法可以更新持久对象的特定字段.
从传入的哈希更新模型的属性并保存记录,所有记录都包含在事务中.如果对象无效,则保存将失败并返回false.
更新其接收器就像更新但呼叫保存!而不是保存,因此如果记录无效,则会引发异常.
更新单个属性并保存记录.这对现有记录上的布尔标志特别有用.另请注意
验证被跳过.
调用回调.
如果该列可用,则更新updated_at/updated_on列.
更新此对象中所有脏的属性.
ActiveRecord::ActiveRecordError如果属性标记为只读,则此方法引发if.
别名
update
update_attributes!(attributes)
别名
update!
相当于
update_columns(name => value)
直接在发出UPDATE SQL语句的数据库中更新属性,并将它们设置在接收器中.
这是更新属性的最快方法,因为它直接进入数据库,但考虑到因此定期更新过程被完全绕过.特别是:
跳过验证.
跳过回调.
updated_at/updated_on未更新.
ActiveRecord::ActiveRecordError调用新对象时,或者至少将其中一个属性标记为只读时,此方法会引发此问题.
update和update!(因此update_attributes和update_attributes!)呼叫save.所以在你的情况下,你应该尝试使用update_column或update_columns.
| 归档时间: |
|
| 查看次数: |
17719 次 |
| 最近记录: |