Rails中混淆的Id Postgres错误4

时间:2014-04-11 03:53:02

标签: ruby-on-rails postgresql ruby-on-rails-4 gem

我将我的应用程序从Rails 3.2升级到Rails 4.1,但现在它无法显示单独的答案。当我去显示页面寻找答案时(比如'/ answers / 0183759926'),我收到一个错误:

PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "--- {} "
LINE 1: ... "answers" WHERE "answers"."id" IN (1862, '--- {} 
                                                     ^
SELECT "answers".* FROM "answers" WHERE "answers"."id" IN (1862, '--- {} ') ORDER BY answers.updated_at DESC

我有一个名为Answers的模型:

 class Answer < ActiveRecord::Base
  #...
  default_scope { order('answers.updated_at DESC') }
  obfuscate_id 
  #...

这是控制器:

def show
    @answer = Answer.find(params[:id]) #relies on gem
end

我正在使用gem'obfuscate_id'来加扰显示的ID:

 gem 'obfuscate_id', :git => 'https://github.com/namick/obfuscate_id.git'

如何修复错误?

更新:
这似乎是gem的find方法的一个问题。见https://github.com/namick/obfuscate_id/issues/19

1 个答案:

答案 0 :(得分:1)

此问题是由当前gem和Rails 4.1之间的不兼容引起的。为了规避它,我致电Answer.deobfuscate_id以获取实际的id,然后在实际find_by(id: )上使用id