ActiveModel::序列化程序在rails控制台测试中未返回有效的JSON



我对Rails还比较陌生,这是我第一次使用ActiveModel:Serializer。在继续之前,我只是想设置一个简单的序列化程序,并在rails控制台中对其进行测试。它似乎使用了序列化程序,但没有返回有效的JSON格式。从我正在处理的指令(我是一名学生)来看,我似乎应该接收JSON。在过去的几个小时里,我一直在研究,但一切似乎都不相关或超出了我的想象。

我的用户型号:

class User < ActiveRecord::Base
# User has attributes: first_name, last_name, email, password
has_many :lists
def full_name
first_name + " " + last_name
end
end

我的UserSerializer:

class UserSerializer < ActiveModel::Serializer
attributes :id, :full_name, :email
def full_name
object.full_name
end
end

Rails控制台中的命令:

>> User.create(first_name: "Jane", last_name: "Doe", email: "test@fake.com")
>> UserSerializer.new(User.first).as_json

控制台返回:

=> {"user"=>{:id=>1, :full_name=>"Jane Doe", :email=>"test@fake.com"}}

as_json构造一个Ruby Hash,该Ruby Hash随后可以由序列化库"序列化"(转换为字符串)。

请尝试调用to_json。此方法将返回一个可以解析的字符串。

>> User.create(first_name: "Jane", last_name: "Doe", email: "test@fake.com")
>> UserSerializer.new(User.first).to_json
=> "{"user":{"id":1,"full_name":"Jane Doe","email":"test@fake.com"}}"

使用JSON.parse将字符串反序列化回哈希:

>> JSON.parse({"user"=>{:id=>1, :full_name=>"Jane Doe", :email=>"test@fake.com"}}.to_json)
=> {"user"=>{"id"=>1, "full_name"=>"Jane Doe", "email"=>"test@fake.com"}}

相关内容

  • 没有找到相关文章

最新更新