Подтвердить что ты не робот

Как обновить значение записи данных с помощью Ruby on Rails 4.0.1/PostgreSQL Hstore?

Я сталкиваюсь с какой-то странной проблемой, которая должна быть ошибкой пользователя с моей стороны, но не могу понять.

Я использую Ruby 1.9.3-p194, Rails 4.01, PostgreSQL.

У меня есть модель Customer с столбцом data​​strong > , который является hstore. По какой-то причине я не могу обновить столбец данных (hstore) любым новым ключом/значениями и не могу обновить существующее значение ключа. Я могу сделать вставку и указать любой ключ/значения без какой-либо проблемы.

Идентификатор клиента: 1, first_name: "Mark", last_name: "Test", data: { "balance" = > "0" }, created_at: "2013-11-27 14:39:09", updated_at: "2013-11-27 14:39:09"

c.data["balance"] = "100"

c.save

(0.2ms) BEGIN

(0,3 мс) COMMIT  = > true

Если я делаю update_attributes, он сохраняет его.

c.update_attributes({:data => {"balance" => "343"}})

Я не вижу ошибок или исключений, когда использовал c.save!. У кого-нибудь есть идеи?

4b9b3361

Ответ 1

Я все еще нуждался в этом, чтобы работать сейчас, и не мог дождаться, когда ошибка будет решена, поэтому здесь мой способ:

c.data["balance"] = "100"
c.data_will_change!
c.save

... и он сохранит в БД!

"attribute_name_will_change!" метод не так хорошо документирован и может быть найден во введении в модуль Active Model Dirty: http://api.rubyonrails.org/classes/ActiveModel/Dirty.html

Ответ 2

Хорошо, наконец, нашел ответ на мой вопрос. Оказывается, это ошибка в Rails 4.0.

"Ошибка ActiveRecord Hstore: невозможно обновить ключ в хеше" https://github.com/rails/rails/issues/6127