Ruby on rails Heroku PG错误,不';在开发中没有出现

Ruby on rails Heroku PG错误,不';在开发中没有出现,ruby-on-rails,postgresql,heroku,rails-activerecord,Ruby On Rails,Postgresql,Heroku,Rails Activerecord,即使我的“visit_id”在数据库中定义为整数,我也会遇到此错误。有人有什么原因吗?我的本地环境是sqlite3,工作正常,但当我推到heroku时,我得到了这个。。。下面是我的表格代码 PG::InvalidTextRepresentation:错误:布尔类型的输入语法无效:“访问\u id” 控制器 def show @visit = Visit.find_by :visit_id respond_with(@payment)

即使我的“visit_id”在数据库中定义为整数,我也会遇到此错误。有人有什么原因吗?我的本地环境是sqlite3,工作正常,但当我推到heroku时,我得到了这个。。。下面是我的表格代码

PG::InvalidTextRepresentation:错误:布尔类型的输入语法无效:“访问\u id”

控制器

      def show  
        @visit = Visit.find_by :visit_id

        respond_with(@payment)
      end

      def new
        @visit = Visit.find(params[:visit_id])
        @payment = @visit.build_payment
      end

      def create
        @payment = Payment.new(payment_params)
        api = UrlApi.new()
        url = api.unique_url
        @payment.update_attribute :atapi, url
        @payment.save
        if @payment.save
          respond_with(@payment)
        else
          redirect_to edit_payment_path, :alert => "Unable to update user."
        end
付款表格

    <div class="row form">
      <div class="col-sm-6 row-col">
          <div class="box">
              <!--visits form -->
              <%= bootstrap_form_for(@payment) do |f| %>
                <%= f.hidden_field :user_id, :value => current_user.id %>
                <%= f.hidden_field :visit_id %>
                <%= f.text_field :coupon_code %>
                <%= f.check_box :coupon_valid %>
                <%= f.check_box :paid %>
          </div>
      </div>

      <div class="col-sm-6">
          <div class="box">
              <%= f.text_field :atapi %>
             <%= f.select :seen, 
                 [['Yes',true],['No',false]], 
                label: "Patient seen"
                <%= f.submit %>
              <% end %>
              <div class="row submit">
                  <div class="col-md-3 right">
                  </div>
              </div>
          </div>
      </div>
    </div>

当前用户id%>

您的问题可能就在这里:

@visit = Visit.find_by :visit_id
由于您正在给
find_by
一个非散列的东西,它很可能正在调用
对它进行查找,并生成如下SQL:

select visits.* from visits where visit_id limit 1
在PostgreSQL中,WHERE子句的每个组件都是一个布尔值,因为PostgreSQL有一个真正的布尔值类型,它将尝试将标识符
visit\u id
解释为布尔值,但
visit\u id
列是一个整数,因此您可以得到:

布尔类型的输入语法无效:“访问\u id”

SQLite对SQL的解释比PostgreSQL宽松得多,它:

1.1布尔数据类型

SQLite没有单独的布尔存储类。相反,布尔值存储为整数0(false)和1(true)

所以说
其中的某个整列
对SQLite来说非常有意义

我猜您的
节目控制器应该从以下内容开始:

@visit = Visit.find_by(:visit_id => params[:visit_id])


导致该错误的具体代码是什么?顺便说一句,在SQLite上开发并在PostgreSQL上部署是个坏主意,ActiveRecord并没有真正提供任何有用的可移植性?这是错误开始的第一行。我理解同时使用pg和sqlite3的坏想法,我的计划是尽快将开发转移到pg。我目前正在学习PG的同时也在使用这个应用程序,但我还不知道如何在本地正确设置它。比我聪明的人来拯救我!第二个修好了,谢谢你的时间!
@visit = Visit.find(params[:visit_id])