Rails: NameError (неинициализированная константа UserSerializer)

В настоящее время я создаю приложение только для Rails API с использованием Rails 6.0. Я использую fast_jsonapi для JSON: сериализация объектов Ruby через API. На данный момент я создал только UsersController.

У меня есть user модель со следующими атрибутами:

ActiveRecord::Schema.define(version: 2020_03_14_175719) do
 create_table "users", force: :cascade do |t|
    t.string "first_name"
    t.string "last_name"
    t.string "username"
    t.string "password_digest"
    t.string "email"
    t.string "phone"
    t.text "address"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["username"], name: "index_users_on_username", unique: true
  end
end

Я создал для него user_serializer:

class UserSerializer
  include FastJsonapi::ObjectSerializer
  attributes :first_name, :last_name, :username, :password, :email, :phone, :address
end

Я также создал User в базе данных через rails console со следующей информацией:

User.delete_all
user = User.create! first_name: 'Promise', last_name: 'My last name', username: 'myusername', email: '[email protected]', password: 'mypassword', phone: '002037363', address: 'my address'
puts "Created a new user: #{user.first_name} #{user.last_name} with email - #{user.email}"

Однако, когда я запускаю команду ниже в консоли rails:

UserSerializer.new(User.first).serializable_hash

Я получаю сообщение об ошибке ниже:

NameError (неинициализированная константа UserSerializer)

Я пробовал несколько решений, но, похоже, ни одно из них не работает. Мне нужна помощь. Спасибо.


person Promise Preston    schedule 15.03.2020    source источник


Ответы (3)


Вот как я это решил:

Выйдите из консоли рельсов, если вы все еще внутри нее:

exit

Остановите предварительный загрузчик приложения spring Rails:

spring stop

Снова введите rails console в среду разработки:

rails console

Снова запустите команду:

UserSerializer.new(User.first).serializable_hash

Он дает такой вывод:

#<ActiveRecord::Relation [#<User id: 3, first_name: "Promise", last_name: "My last name", username: "myusername", password_digest: [FILTERED], email: "[email protected]", phone: "002037363", address: "my address", created_at: "2020-03-14 18:36:31", updated_at: "2020-03-14 18:36:31">]>

Это все.

Надеюсь, это поможет

person Promise Preston    schedule 15.03.2020
comment
Сработало как шарм, спасибо. - person Ali Ammaar; 08.02.2021

Перезагрузите исходный код терминала или откройте новую вкладку терминала. У меня сработало открытие нового терминала и запуск нового rails console.

person Kshitij    schedule 10.07.2020

Попробуйте reload! в консоли rails.

Вы также можете открыть rails console в другом tab или terminal.

person Chakreshwar Sharma    schedule 10.07.2020