Ruby on rails Heroku PG错误,不';在开发中没有出现
即使我的“visit_id”在数据库中定义为整数,我也会遇到此错误。有人有什么原因吗?我的本地环境是sqlite3,工作正常,但当我推到heroku时,我得到了这个。。。下面是我的表格代码 PG::InvalidTextRepresentation:错误:布尔类型的输入语法无效:“访问\u id” 控制器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)
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])