2015-08-26 2 views
2

В настоящее время я работаю с REST API, у которого есть объект с атрибутом «name».Ошибка ActiveResource :: BadRequest при попытке сохранить после одного обновления примитивный атрибут

item = person.find(id) 

Я могу прокрутить атрибуты элемента без каких-либо проблем, и один атрибут, действительно, «имя». Однако, когда я пытаюсь следующее:

item.attributes["name"] = "New Name" 

Я могу подтвердить, что "имя" атрибута было обновлено, но после вызова

item.save 

результатов в ActiveResource :: BadRequest (400) ошибки. Кто-нибудь сталкивался с такой проблемой раньше?

Спасибо!

Я попытался выше, и я также попытался

item = person.find(id) 
item.name = "New Name" 
item.save 

Наконец, согласно предложению, я попытался

item.update_attribute(:name, "New Name") 

и опущен, так как item.save сохранения выполняется по своей сути.

Кажется, что независимо от того, что я стараюсь, я продолжаю видеть следующую трассировку стека:

ActiveResource::BadRequest (Failed. Response code = 400. Response message = Bad Request.): 
app/controllers/home_controller.rb:84:in `update_data' 

Где линия 84 является событие, когда объект ActiveResource обновляется.

+0

Какую версию Rails вы используете? –

+0

рельсы версия 4.2.0. Active Resource version 4.0.0 –

ответ

0

Похоже, что attributes= устарел, обновляя последнюю стабильную версию Rails. Последняя существующая версия (v3.1.0).

Вместо этого, вы можете использовать update_attribute обновить атрибут записи, то:

item.update_attribute(:name, "New Name") 

и update_attribute сохранит запись (если действует), так что вам не придется вызывать save на него.

+0

Спасибо. Я также попробовал update_attribute, безрезультатно (такая же ошибка). –

+0

вы можете показать полный фрагмент кода? также какую версию Rails вы используете? –

+0

Обновлено мое первоначальное сообщение с этой информацией. –