2014-10-27 2 views
0

У меня есть funciton, который создает новый объект Контракта и сохраняет его при утверждении запроса на подписку. Он вызывается в действии обновления подписки и извлекается в собственный класс, вместо того, чтобы сидеть на модели или контроллере.Запись не сохранена на Heroku, но находится на разработке

На Heroku он показывает 500 в журнале, но не дает сообщений по этому вопросу. Остальные строки кода продолжают работать.

Полный блок кода:

#Check to see the status of the subscription and that all of the checks have been completed 
     if @subscription.Approved == "In Review" or @subscription.Approved == "Pending" && @subscription.CompanyNameCheck == "Approved" && @subscription.CompanyAddressCheck == "Approved" && @subscription.CompanyVATCheck == "Approved" && @subscription.CompanyKVKNumberCheck == "Approved" && @subscription.KVKCheck == "Approved" && @subscription.IDCheck == "Approved" 
      #If everything is approved, then set the Subscription to approved and set the date 
      @subscription.Approved = "Approved" 
      @subscription.AcceptDate = Date.current 
      @subscription.save! 
      # Create a contract for the subscription 
      @company = Company.find(@subscription.company_id) 
      @contract = Contract.new(:company_id => @company.id, :subscription_type => @subscription.product.name, :company_type => @company.legal_entity, :subscription_id => @subscription.id, :CompanyName => @company.name) 
      @contract.save! 
      EventMailer.subscription_contract(@subscription, @contract).deliver 
     end 

линии не выполняется:

 @company = Company.find(@subscription.company_id) 
     @contract = Contract.new(:company_id => @company.id, :subscription_type =>  @subscription.product.name, :company_type => @company.legal_entity, :subscription_id => @subscription.id, :CompanyName => @company.name) 
     @contract.save! 
     EventMailer.subscription_contract(@subscription, @contract).deliver 

Heroku Журналы:

2014-10-27T08:31:27.296463+00:00 heroku[router]: at=info method=GET path="/subscriptions/8/edit" host=tso.herokuapp.com request_id=a7ba490f-31fd-49ef-b282-3d65e978cab6 fwd="213.127.222.82" dyno=web.1 connect=1ms service=530ms status=200 bytes=10399 
    2014-10-27T08:31:38.053338+00:00 heroku[router]: at=info method=POST path="/subscriptions/8" host=tso.herokuapp.com request_id=2f51d682-8d10-4709-9390-b1eb6d724144 fwd="213.127.222.82" dyno=web.1 connect=1ms service=233ms status=500 bytes=1543 

ответ

0

Вам нужно добавить камень 'rails_12factor' вашего Gemfile.Use этой ссылке heroku setup

+0

Я добавил камень rails_12factor и увидел, что проблема заключается в том, что проблема заключается в создании контракта '2014-10-27T10: 31: 54.618554 + 00: 00 app [web.1]: (2.4ms) BEGIN 2014 -10-27T10: 31: 54.623263 + 00: 00 приложение [web.1]: (2.0ms) SELECT MAX («контракты». «Id») AS max_id FROM «контракты» 2014-10-27T10: 31: 54.623268 +00: 00 приложение [web.1]: (2.0ms) SELECT MAX («контракты». «Id») AS max_id FROM «контракты» 2014-10-27T10: 31: 54.625577 + 00: 00 приложение [web. 1]: (2.1ms) ROLLBACK 2014-10-27T10: 31: 54.625583 + 00: 00 приложение [web.1]: (2.1ms) ROLLBACK 'Непонятно, почему SELECT MAX не работает – user3252764

+0

Пожалуйста, вставьте свой код для модели и контроллера, чтобы устранить проблему. –

+0

Нашел решение - в модели возникла проблема с установкой значения ID для Контракта. Ваш запрос на модель дал мне ключ к более детальному рассмотрению модели, и единственным кодом, который мог бы быть, был обратный вызов before_create, который устанавливает id для начала работы с 1000, а не 1. 'self.id = [1000, self.class.maximum (: id) +1] .max, если self.id.nil? 'удаление этого кода устраняет проблему – user3252764

0

Вы можете попробовать использовать Logentries, чтобы попытаться развернуть сообщение об ошибке или попробуйте добавить rails_12factor драгоценный камень

+0

Ok. Давайте попробуем создать объект '@ contract' в контенте heroku Rails. Отправьте здесь системный ответ, пожалуйста. –

Смежные вопросы