使用 Active Record 更新 `jsonb` 值
Using Active Record to update a `jsonb` value
我知道这是我正在尝试做的事情,但使用 ActiveRecord 实际上可能无法做到。然而,这是我必须解决的一件事。
在高层次上,我需要 jsonb
值。
{ question: ’q5’, normal: 0, hybrid: 2500 }
我所做的是创建一个快速迁移,将我的新值 condition_price
设置为 jsonb
值。我也将默认设置为 {}
,因为我只有一个需要更新。
def change
add_column :condition_columns, :condition_price, :jsonb, default: {}
end
创建完成后,我就出去编辑我的特定 condition_price
。我正式尝试过的是:
ConditionColumns.where(id: 12).first.update!{"condition_price = (question: ’q5’, normal: 0, hybrid: 2500).to_json"}
我觉得这是我离它最近的一次,但我不太确定我在哪里。
有没有人知道这是否可行或如何实现?
我认为更好的解决方案是使用 save
而不是更新。喜欢:
condition_column = ConditionColumns.find(12)
condition_column.condition_price['question'] = 'q5'
condition_column.save
或
condition_column.condition_price.merge!('question' => 'q5')
condition_column.save
或者如果您需要使用更新
condition_column.update!(condition_price: { question: ’q5’, normal: 0, hybrid: 2500 })
我知道这是我正在尝试做的事情,但使用 ActiveRecord 实际上可能无法做到。然而,这是我必须解决的一件事。
在高层次上,我需要 jsonb
值。
{ question: ’q5’, normal: 0, hybrid: 2500 }
我所做的是创建一个快速迁移,将我的新值 condition_price
设置为 jsonb
值。我也将默认设置为 {}
,因为我只有一个需要更新。
def change
add_column :condition_columns, :condition_price, :jsonb, default: {}
end
创建完成后,我就出去编辑我的特定 condition_price
。我正式尝试过的是:
ConditionColumns.where(id: 12).first.update!{"condition_price = (question: ’q5’, normal: 0, hybrid: 2500).to_json"}
我觉得这是我离它最近的一次,但我不太确定我在哪里。
有没有人知道这是否可行或如何实现?
我认为更好的解决方案是使用 save
而不是更新。喜欢:
condition_column = ConditionColumns.find(12)
condition_column.condition_price['question'] = 'q5'
condition_column.save
或
condition_column.condition_price.merge!('question' => 'q5')
condition_column.save
或者如果您需要使用更新
condition_column.update!(condition_price: { question: ’q5’, normal: 0, hybrid: 2500 })