2014-01-28 4 views
1

У меня есть модель с атрибутом типа date_array. База данных - postgresql. При обновлении модели со значением атрибута, являющимся массивом правильно отформатированные строки даты, я получаю эту ошибку:ActiveRecord :: ArrayTypeMismatch должен быть массивом или иметь допустимое значение массива

ActiveRecord::ArrayTypeMismatch (shipdates must be an Array or have a valid array value (''{"2014-01-16","2014-01-17","2014-01-18","2014-01-21"}'')): 
    app/controllers/vendor/orders_controller.rb:59:in `update' 


    Rendered /Users/sony/.rvm/gems/[email protected]/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (3.0ms) 
    Rendered /Users/sony/.rvm/gems/[email protected]/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (2.3ms) 
    Rendered /Users/sony/.rvm/gems/[email protected]/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (32.0ms) 

Postgres ожидает date_arrays быть строкой, как это: { «2014-01-16», «2014-01-17», «2014-01-18», «2014-01-21»}

Из сообщения об ошибке видно, что значение вставляется в дополнительные кавычки. Не знаю, почему.

ответ

3

Оказывается, проблема связана с ошибкой в ​​одном из драгоценных камней, которые я использовал. Драгоценный камень называется activerecord-postgres-array, и последний bundle install, должно быть, потянул эту ошибку: https://github.com/tlconnor/activerecord-postgres-array/issues/37

Я обновил свой gemfile для использования версии 0.0.8 этого драгоценного камня. Теперь обновление работает отлично.

Gemfile:

gem 'activerecord-postgres-array', '0.0.8' 
Смежные вопросы