Rails: NameError (未初始化常量 UserSerializer)
Rails: NameError (uninitialized constant UserSerializer)
我目前正在使用 Rails 6.0 构建一个仅 Rails 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 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 (uninitialized constant UserSerializer)
我尝试了一些解决方案,但 none 似乎有效。我需要一些帮助。谢谢。
我是这样解决的:
退出 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">]>
就这些了。
希望对您有所帮助
重新加载终端源或启动一个新的终端选项卡也可以。
打开一个新的 终端 并开始一个新的 rails console
对我有用。
在 rails 控制台中尝试 reload!
。
您也可以在另一个 tab
或 terminal
中打开 rails console
。
我目前正在使用 Rails 6.0 构建一个仅 Rails 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 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 (uninitialized constant UserSerializer)
我尝试了一些解决方案,但 none 似乎有效。我需要一些帮助。谢谢。
我是这样解决的:
退出 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">]>
就这些了。
希望对您有所帮助
重新加载终端源或启动一个新的终端选项卡也可以。
打开一个新的 终端 并开始一个新的 rails console
对我有用。
在 rails 控制台中尝试 reload!
。
您也可以在另一个 tab
或 terminal
中打开 rails console
。