Rails: NameError (未初始化常量UserSerializer)。

8

我目前正在使用Rails 6.0构建一个仅限API的应用程序。我正在使用fast_jsonapi将Ruby对象序列化为JSON: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

我还通过rails控制台创建了一个User,其信息如下:

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}"

然而,当我在Rails控制台中运行以下命令时:
UserSerializer.new(User.first).serializable_hash

我遇到了以下错误:

NameError(未初始化的常量UserSerializer)

我尝试了一些解决方案,但似乎都没有起作用。我需要帮助。谢谢。
3个回答

32

这是我解决问题的方法:

如果您还在Rails控制台中,请退出:

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: "myemail@gmail.com", phone: "002037363", address: "my address", created_at: "2020-03-14 18:36:31", updated_at: "2020-03-14 18:36:31">]>

就这些。

我希望这有所帮助。


1
像魔法一样运行,谢谢你。 - Ali Ammaar

1

重新加载终端源或启动新的终端标签页也可以。 对我来说,打开一个新的终端并启动一个新的rails控制台有效。


1
尝试在Rails控制台中输入reload! 您还可以在另一个选项卡终端中打开rails控制台

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接