Ruby on Rails / PostGRE - ни один оператор не соответствует указанному имени и типу аргумента. ошибка - PullRequest
0 голосов
/ 26 октября 2018

Я получаю эту ошибку в своем приложении Ruby on Rails,

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

Я прочитал API переполнения стека и не могу найти ответ, который мне подходит. Так что это конкретные части кода:

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)
                                                               ^

Моя логика, лежащая в основе этой ошибки, заключается в том, что у меня есть два пользователя, пользователи магазина и пользователи-сотрудники, оба они являются пользователями, но у сотрудников-сотрудников есть «флаг», поэтому они могут видеть все элементы в магазине. У пользователей магазина нет этого флага, поэтому на этой веб-странице должны отображаться элементы, которые у них есть «в списке желаний», и когда я создаю таблицу, чтобы заполнить ее, я получаю вышеуказанную ошибку /

Этот код работает, когда я являюсь пользователем-сотрудником, и заполняет мою таблицу по мере необходимости, но не работает, когда я - пользователь магазина.

Вопрос : Как я могу исправить эту ошибку, не сильно меняя код?

РЕДАКТИРОВАТЬ: СХЕМА

  create_table "current_item", force: :cascade do |t|
    t.string   "name",                default: "", null: false
    t.string   "description"
    t.integer  "cost"
    t.datetime "created_at",                       null: false
    t.datetime "updated_at",                       null: false
    t.string   "user_id"
  end

1 Ответ

0 голосов
/ 26 октября 2018

Благодаря Marcin Kologziej:

столбец user_id был определен с неправильным типом.Вместо строк, это должно быть целое число, согласно ошибке.Поэтому я создал новую миграцию, используя код:

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

, а затем выполнил:

rake db:migrate

И теперь все отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...