2014-11-17 5 views
0

내 "visit_id"가 db 내 정수로 정의되어 있어도이 오류가 발생합니다. 누구나 왜 그런 이유가 있니? 내 로컬 env sqlite3 및 잘 작동하지만 heroku 밀어 때이 얻을 ... 아래 내 양식 코드입니다.Heroku PG 오류가 개발 중에 표시되지 않습니다.

PG : InvalidTextRepresentation : ERROR : 유형 부울에 대한 잘못된 입력 구문 : 지불

은 "visit_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> 
+0

해당 오류에 이르게 특정 코드는 무엇입니까? BTW, SQLite에서 개발하고 PostgreSQL에 배포하는 것은 나쁜 생각입니다. ActiveRecord는 실제로 유용한 이식성을 제공하지 않습니다. –

+0

heroku 로그의 특정 오류 코드가 표시되지 않습니까? 그것이 오류가 시작되는 첫 번째 행입니다. 나는 pg와 sqlite3 모두를 수행하는 나쁜 이상을 이해하고 있으며, 나의 계획은 개발을 가능한 빨리 끝내는 것이다. 현재이 앱에서 작업하면서 PG를 배우는 중입니다.하지만 아직 제대로 설정하지 못했습니다. – keith

답변

0

귀하의 문제는 바로 여기에 아마도 :

@visit = Visit.find_by :visit_id 
당신이 해시되지 find_by 무언가를 제공하고 있기 때문에

, 그것은 아마에 to_s를 호출하고 다음과 같이 SQL을 생산 : PostgreSQL의에서

select visits.* from visits where visit_id limit 1 

, WHERE 절의 각 구성 요소 것은 부울 이후입니다 당신이 얻을 수 있도록 PostgreSQL은 진정한 부울 유형, 그것은 식별자 부울로 visit_id 해석하려고합니다 가지고 있지만 visit_id 열은 정수 :

invalid input syntax for type boolean: "visit_id"

SQL의 SQLite는의 해석은 PostgreSQL을의 그것에 비해 상당히 느슨하다:

1.1 Boolean Datatype

SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true).

그렇게 where some_integer_column SQLite는에 완벽한 의미가 말하는

.

나는 당신의 show 컨트롤러가 시작하도록되어 있음을 추측에는 요 :

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

또는

@visit = Visit.find(params[:visit_id]) 
+0

나를 구하기보다 더 똑똑한 사람들! 두 번째 문제가 해결되었습니다. 시간 내 주셔서 감사합니다! – keith

관련 문제