Ruby on Rails / PostGRE-没有运算符匹配给定的名称和参数类型。错误

时间:2018-10-26 01:45:31

标签: ruby-on-rails ruby postgresql

我在Ruby on Rails应用程序中获得此错误

A

我已经阅读了堆栈溢出API,找不到适合我的答案。这是代码的特定部分:

HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

此错误背后的逻辑是,我有两个用户,即商店用户和雇员用户,他们都是用户,但雇员用户上面有一个“标记”,因此他们可以看到商店中的所有项目。商店用户没有此标志,因此此网页应显示他们的“愿望清单”项目,并且当我创建一个表来填充此项目时,出现上述错误/

 

此代码在Im是雇员用户时起作用,并根据需要填充我的表,但在我是商店用户时不起作用。

问题:如何在不大量修改代码的情况下解决此错误?

编辑:计划

ActiveRecord::StatementInvalid in Store#show_item

Showing /media/store_test/app/views/store/show_item.html.erb where line #24 raised:

PG::UndefinedFunction: ERROR:  operator does not exist: character varying = integer
LINE 1: ...CT "show_item".* FROM "current_item" WHERE (user_id = 1)
                                                               ^

1 个答案:

答案 0 :(得分:1)

感谢Marcin Kologziej:

user_id列定义的类型错误。根据错误,它应该是整数,而不是字符串。因此,我使用以下代码创建了一个新迁移:

change_column :current_item, :user_id, :integer, using: 'user_id_id::integer'

然后执行:

rake db:migrate

现在一切正常。