我有一个使用MySQL db 5.7的rails 4.2应用程序,该数据库支持json字段。所以我的用户模型有一个名为display_pic的字段,它是一个json对象。
class User < ActiveRecord::Base
serialize :display_pic, JSON
....
在动作get_user中,我按如下所示呈现用户
def get_user
@u = User.where(...)
render json: { user: @u }
end
问题在于json字段display_pic
不会作为嵌套的json对象出现,而是呈现为字符串。我想收到以下回复
{
"user": {
"name": "some name",
"email": "some email",
"display_pic": {
"url": "http://someurl.com",
"width": "400px",
}
}
}
答案 0 :(得分:1)
可能是一种更好的方法,但是您可以在序列化程序中将其格式化为json。
{{obj.first}}{{obj.second}}
答案 1 :(得分:0)
使用以下代码将解决您的问题:
def get_user
@u = User.where(...)
render json: { user: JSON.parse(@u)}
end
答案 2 :(得分:0)
您是否尝试过使用.as_json方法?
def get_user
@u = User.where(...)
render json: @u.as_json
end
您不需要设置serialize:display_pic,:JSON,但是您可以在user.rb类中重载该方法,以获取响应引用或以合法方式加载到前端的方法结果:
class PlayerCharacter < ApplicationRecord
[...]
def as_json(options = {})
super(options.merge(include: [ :reference1, :reference2]).merge(methods: [:method_name1, :method_name2])
end
end
编辑: 您可以按如下所示添加display_pic:
class PlayerCharacter < ApplicationRecord
[...]
def as_json(options = {})
super(options.merge(include: [ :display_pic])
end
end