使用 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 })