rails 4中的update_columns
属性是否等同hstore
?
我的模特是:
class Image < ActiveRecord::Base
store_accessor :additions, :small, :medium, :big, :image_version
end
假设我想要更新small
我试过了:
@image = Image.first
@image.update_columns(small: 'my_small_image')
但我收到了,当然:
PG::UndefinedColumn: ERROR: column "small" of relation "contents" does not exist
LINE 1: UPDATE "images" SET "small" = 'my_small_image' WHERE "imag...
^
: UPDATE "images" SET "small" = 'my_small_image' WHERE "images"."id" = 1
有一种简单的方法吗?
编辑:我无法使用update_attributes
,因为我需要保存仅传递的参数。
update_attributes
调用save
,我不希望这样,因为它会保存所有其他已更改的属性,而不仅仅是传递的属性。
示例:
@image = Image.first
@image.big = 'fjdiosjfoa'
@image.update_attributes(small: 'my_small_image')
大小都得救了。
相反,使用update_columns
,只会保存一小部分。如何使用hstore进行操作?
答案 0 :(得分:2)
如果要保存,请使用update_attributes(small: 'my_small_image')
。
如果您不想保存,请使用assign_attributes(small: 'my_small_image')
。
答案 1 :(得分:1)
使用update_column但传入hstore属性和哈希。要防止任何现有的hstore值被吹走,您需要合并现有值:
@image.update_column(:additions, @image.additions.merge({ 'small' => 'my_small_image' }) )