Saat ini saya sedang membangun aplikasi Rails API-only menggunakan Rails 6.0. Saya menggunakan fast_jsonapi untuk serialisasi JSON:API Objek Ruby. Untuk saat ini saya hanya membuat UsersController.

Saya memiliki model user dengan atribut berikut:

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

Saya telah membuat user_serializer untuk itu:

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

Saya juga telah membuat User pada database melalui rails console dengan informasi berikut:

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

Namun, ketika saya menjalankan perintah di bawah ini di konsol Rails:

UserSerializer.new(User.first).serializable_hash

Saya mendapatkan kesalahan di bawah ini:

NameError (UserSerializer konstan yang tidak diinisialisasi)

Saya telah mencoba beberapa solusi, tetapi sepertinya tidak ada yang berhasil. Aku butuh bantuan. Terima kasih.

8
Promise Preston 15 Maret 2020, 04:33

3 jawaban

Jawaban Terbaik

Berikut cara saya menyelesaikannya:

Keluar dari konsol Rails, jika Anda masih berada di dalamnya:

exit

Hentikan prapemuat aplikasi Rails pegas:

spring stop

Masukkan rails console di lingkungan pengembangan lagi:

rails console

Jalankan perintah lagi:

UserSerializer.new(User.first).serializable_hash

Ini memberikan output semacam ini:

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

Itu saja.

Saya harap ini membantu

15
Promise Preston 3 Mei 2020, 16:53

Coba reload! di konsol Rails.

Anda juga dapat membuka rails console di tab atau terminal lain.

0
Chakreshwar Sharma 10 Juli 2020, 20:50

Muat ulang sumber terminal atau memulai tab terminal baru juga akan berfungsi. Membuka terminal baru dan memulai rails console baru berhasil bagi saya.

0
Kshitij 10 Juli 2020, 19:40