我将我的应用程序从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
答案 0 :(得分:1)
此问题是由当前gem和Rails 4.1之间的不兼容引起的。为了规避它,我致电Answer.deobfuscate_id
以获取实际的id
,然后在实际find_by(id: )
上使用id
。