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

ActiveRecord:: UnknownAttributeError?

Я просто нажал приложение в среду производства Heroku.

В принципе существует модель Bus и имеет атрибут seats

class Bus < ActiveRecord::Base
  attr_accessible :seats, # other attributes
end

Теперь у меня есть интерфейс JavaScript, для которого POST JSON для новых шин используется для действия buses#create.

ActiveRecord продолжает сталкиваться с ошибкой при попытке создать шину:

: POST www.busables.com/buses dyno=web.1 queue=0 wait=5ms service=65ms status=500 bytes=728
: 
: ActiveRecord::UnknownAttributeError (unknown attribute: seats):
:   app/controllers/buses_controller.rb:31:in `new'
:   app/controllers/buses_controller.rb:31:in `create'

Параметры достигают прекращения действия контроллера. Я могу зарегистрировать их, и я получаю следующее:

The bus parameters received: {"seats"=>"24", "departure_time(1i)"=>"2011", "departure_time(2i)"=>"11", "departure_time(3i)"=>"25", "departure_time(4i)"=>"16", "departure_time(5i)"=>"15", "route_attributes"=>{"summary"=>"N51", "beginning_address"=>"A place", "terminal_address"=>"Another place", "distance"=>26362, "duration"=>1753}}

Я проверил, что таблица Bus имеет столбец seats, и он делает это (я запускал это в консоли Heroku):

> Bus.column_names
=> ["id", "name", "route_id", "created_at", "updated_at", "price", "departure_time", "trip_distance", "trip_duration", "seats"]

И, конечно же, я попытался выполнить миграцию и загрузить схему базы данных. Я проверил, что параметр attr_accessible :seats также установлен правильно.

Любые другие идеи?

Я запускаю Rails 3.1.1 на стеке кедра Heroku. Все работает нормально на моей локальной машине.

4b9b3361

Ответ 1

Это клише, но я попытался снова утром, и он отлично работает! Я подозреваю, что это может быть проблема распространения.

Ответ 2

У меня была эта же проблема с моим приложением Heroku на производстве, но не с моим почти идентичным приложением в постановке.

В чем разница? В моем промежуточном приложении было только 1 веб-дино, а не 2.

Итак, я вручную масштабировал свое производственное приложение до 0 веб-динов, а затем обратно до 2.

BAM! Задача решена.

Ответ 3

Я вытаскивал свои волосы на этом, пока не увидел комментарий Leito выше.

heroku restart --app staging

зафиксировал это для меня.

Ответ 4

Попробуйте это

attr_reader :seats
attr_accessor :seats

вместо

attr_accessible :seats