ошибка heroku - NoMethodError (неопределенный метод "обновлен?" - PullRequest
1 голос
/ 05 декабря 2011

У меня есть приложение rails 3.1 на Heroku, я постоянно получаю ошибку 500, которую не могу воссоздать в dev.

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

2011-12-05T13:52:35+00:00 app[web.1]: Completed 500 Internal Server Error in 15ms
2011-12-05T13:52:35+00:00 app[web.1]: 
2011-12-05T13:52:35+00:00 app[web.1]: NoMethodError (undefined method `updated?' for #<ActiveRecord::Associations::HasOneAssociation:0x00000004058800>):
2011-12-05T13:52:35+00:00 app[web.1]:   app/controllers/cars_controller.rb:81:in `block in update'
2011-12-05T13:52:35+00:00 app[web.1]:   app/controllers/cars_controller.rb:80:in `update'

Действие обновления на контроллере моего автомобиля -

def update
    @car = Car.find_by_url_identifier(params[:id])
    respond_to do |format| #**line 80**
      if @car.update_attributes(params[:car]) #**line 81**
        CarMailer.gift_confirmation(@car).deliver
        format.html { redirect_to(thanks_path(@car.url_identifier)) }
      else
        format.html { render action: "edit" }
      end
    end
end 

Размещаемые параметры -

{"utf8"=>"✓",
 "_method"=>"put",
 "authenticity_token"=>"RTXCVvdsKQHc8CxHLeYS9WuztcrI1b4H8SHsdfsKWu+Iz4=",
 "car"=>{"name"=>"dgdfsdfsd",
 "email"=>"test@test.com",
 "recipient_attributes"=>{"name"=>"fdsfsd",
 "address1"=>"sdfsdfdsf",
 "address2"=>"dsfdsfsdf",
 "city"=>"sdfdsf",
 "postcode"=>"sdfds"},
 "gift_id"=>"2",
 "message"=>"fsdfsdfdsf",
 "terms"=>"1"},
 "commit"=>"submit",
 "id"=>"test5"}

Моя модель автомобиля выглядит следующим образом -

class Car < ActiveRecord::Base
  validates :name, :presence =>true, :on => :update
  validates :url_identifier, :presence =>true, :on => :create
  has_one :recipient
  belongs_to :gift
  accepts_nested_attributes_for :recipient 
  accepts_nested_attributes_for :gift 
  def to_param
    self.url_identifier
  end

end

Есть идеи, как я могу это исправить?Помимо просмотра логов herokus, как еще я могу отладить это?

Как-то странно приложение работает какое-то время, если я перезагружаю heroku

Ответы [ 3 ]

2 голосов
/ 05 декабря 2011

Я не вижу ничего плохого в коде.Так как он работает на вашей машине разработки, я предполагаю, что это нечто другое.Какая-то разницаВы запускали свои миграции на heroku?

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

1 голос
/ 05 декабря 2011

Я погуглил сообщение об ошибке.Вы смотрели на эту тему: http://ruby -forum.com / topic / 81719 У них была похожая проблема, и они опубликовали свое решение / взломать.Может стоит попробовать.

0 голосов
/ 05 декабря 2011

Похоже, вы пытаетесь вызвать метод update для объекта ActiveRecord::Associations вместо (вероятно) модели Car, что странно, потому что вы думаете, что он будет выбран и вызван в модели, если этот метод не найден в Ареле.

Вы можете попытаться отладить это, используя параметры производственной среды в своей среде разработки, просмотрев config/enviroments/production.rb и используя эти параметры для разработки.

Вы также можете попытаться воссоздать проблему на герою, используя heroku console

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