表单在开发中起作用,但在生产中不起作用-Heroku

时间:2019-01-11 18:55:55

标签: ruby-on-rails heroku ruby-on-rails-5

我有一个为公司打造的投票平台,我已经接近完成了,但是在生产过程中实际投票失败了。我已经完成了所有迁移工作和所有工作,并且仍在开发中。

以下是我从heroku收到的日志:

  

2019-01-11T18:33:59.235681 + 00:00 app [web.1]:我,   [2019-01-11T18:33:59.235579#4] INFO-:   [772bc37c-00ee-43da-aa81-564d353553bb]开始发布   于2019-01-11 18:33:59 +0000的“ / ballots / 13 / votes”为75.150.214.2   2019-01-11T18:33:59.236373 + 00:00 app [web.1]:我,   [2019-01-11T18:33:59.236296#4] INFO-:   [772bc37c-00ee-43da-aa81-564d353553bb]处理者   VotesController#create as HTML 2019-01-11T18:33:59.236437 + 00:00   app [web.1]:我,[2019-01-11T18:33:59.236378#4] INFO-:   [772bc37c-00ee-43da-aa81-564d353553bb]参数:{“ utf8” =>“✓”,   “ authenticity_token” =>“ Y / vAh2kYPskozS2yQn3Ky1fOq41abLUjlxho0Q + zXHSndVlaSfwYz7bdoqvintdBXrYNDhsbIduYICpUAx3 / 0g ==”,   “ user_vote” =>“为什么”,“ vote” => {“ comment” =>“”},“ commit” =>“ Cast Vote”,   “ ballot_id” =>“ 13”} 2019-01-11T18:33:59.239540 + 00:00 app [web.1]:D,   [2019-01-11T18:33:59.239464#4]调试-:   [772bc37c-00ee-43da-aa81-564d353553bb]投票负荷(0.7ms)选择   “ ballots”。*从“ ballots”到“ ballots”。“ id” = $ 1 LIMIT $ 2 [[“ id”,   13],[“ LIMIT”,1]] 2019-01-11T18:33:59.240333 + 00:00 app [web.1]:I,   [2019-01-11T18:33:59.240244#4] INFO-:   [772bc37c-00ee-43da-aa81-564d353553bb]完成了500个内部服务器   4毫秒内的错误(ActiveRecord:0.7毫秒)2019-01-11T18:33:59.240846 + 00:00   app [web.1]:F,[2019-01-11T18:33:59.240770#4]致命-:   [772bc37c-00ee-43da-aa81-564d353553bb]   2019-01-11T18:33:59.240917 + 00:00 app [web.1]:F,   [2019-01-11T18:33:59.240847#4]致命-:   [772bc37c-00ee-43da-aa81-564d353553bb]   ActiveModel :: UnknownAttributeError(未知属性“注释”,用于   投票):''2019-01-11T18:33:59.240981 + 00:00 app [web.1]:F,   [2019-01-11T18:33:59.240914#4]致命-:   [772bc37c-00ee-43da-aa81-564d353553bb]   2019-01-11T18:33:59.241051 + 00:00 app [web.1]:F,   [2019-01-11T18:33:59.240987#4]致命-:   [772bc37c-00ee-43da-aa81-564d353553bb]   app / controllers / votes_controller.rb:10:在`create'中   2019-01-11T18:34:07.533587 + 00:00 heroku [run.2070]:状态从   直到完成bobby @ bobby-Al

这是我创建投票的代码

def create
    @ballot = Ballot.find(params[:ballot_id])
    @vote = @ballot.votes.new(user_vote: params[:user_vote], comment: params[:vote][:comment])
    @vote.user_id = current_user.id
    if !current_user.votes.find_by(ballot_id: params[:ballot_id])
        @vote.save
        redirect_to ballot_path(params[:ballot_id]) 
    else
        flash[:alert] = "You've already voted on this ballot"
        redirect_to ballot_path(params[:ballot_id])
    end
end

1 个答案:

答案 0 :(得分:1)

这似乎是一个迁移问题,只需确保像这样在heroku上为环境生产运行迁移:

heroku run rake db:migrate

重新启动您的应用

heroku restart --app my_app_name

重要

如果生成的迁移创建了一个表并推送到heroku,则要将另一列添加到该表中,则不应修改该列,而应为此创建另一列。

当运行rake db:migrate时,rails在表schema_migrations上注册它,因此,如果您修改已经注册的迁移,将不会再次执行。可能是这种情况,请直接检查您的数据库并查看该列是否存在。