ActiveRecord :: UnknownAttributeError? - PullRequest
       0

ActiveRecord :: UnknownAttributeError?

12 голосов
/ 15 ноября 2011

Я только что отправил приложение в рабочую среду Heroku.

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

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

Теперь у меня есть JavaScript-интерфейс, который представляет собой JSON POST для новых шин к действию 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 Cedar. Все отлично работает на моей локальной машине.

Ответы [ 4 ]

10 голосов
/ 16 ноября 2011

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

3 голосов
/ 16 февраля 2012

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

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

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

БАМ! Задача решена.

2 голосов
/ 12 марта 2015

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

heroku restart --app staging

исправил это для меня.

0 голосов
/ 15 ноября 2011

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

attr_reader :seats
attr_accessor :seats

вместо

attr_accessible :seats
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...