【问题标题】:Rails: NameError (uninitialized constant UserSerializer)Rails:NameError(未初始化的常量 UserSerializer)
【发布时间】:2020-06-26 13:25:41
【问题描述】:

我目前正在使用 Rails 6.0 构建一个仅限 Rails API 的应用程序。我正在使用 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

我还通过rails console 在数据库上创建了一个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)

我尝试了一些解决方案,但似乎都没有奏效。我需要帮助。谢谢。

【问题讨论】:

    标签: ruby-on-rails serialization fastjsonapi


    【解决方案1】:

    我是这样解决的

    退出 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">]>
    

    就是这样。

    我希望这会有所帮助

    【讨论】:

    • 工作就像一个魅力,谢谢。
    【解决方案2】:

    重新加载终端源或启动新的终端选项卡也可以。 打开一个新的终端并开始一个新的rails console 对我有用。

    【讨论】:

      【解决方案3】:

      在 Rails 控制台中尝试reload!

      您也可以在另一个tabterminal 中打开rails console

      【讨论】:

        猜你喜欢
        • 2014-12-11
        • 1970-01-01
        • 2015-10-06
        • 1970-01-01
        • 1970-01-01
        • 2018-02-25
        • 2016-11-24
        • 2013-08-25
        • 1970-01-01
        相关资源
        最近更新 更多