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