gpt4 book ai didi

ruby-on-rails - 在 hstore 属性上使用 update_columns

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:50 25 4
gpt4 key购买 nike

对于 Rails 4 中的 hstore 属性,是否有等效于 update_columns 的东西?

我的模型是:

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 做到这一点?

最佳答案

使用 update_column 但传入 hstore 属性和散列。为了防止任何现有的 hstore 值被吹走,您需要合并现有的值:

@image.update_column(:additions, @image.additions.merge({ 'small' => 'my_small_image' }) )

关于ruby-on-rails - 在 hstore 属性上使用 update_columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29897569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com