我目前正在与API回报率,我需要建立虚拟的属性和相关对象的对象。
问题是,当我返回与虚拟属性的对象序列化并不一命呜呼
下面是从foo_controller返回的对象
{
:id=>280,
:virtual=>"y8st07ef7u"
:user_id=>280
}
:虚拟是虚拟属性和user_id是关联表的一个id - 用户。
我的目标是使这
{
:id=>280,
:virtual=>"y8st07ef7u",
:user=>{
:id=>280,
:name=>'foo'
}
}
Foo_controller设置
class Api::V1::FoosController < ApplicationController
foos = Foo.all
foos.each do |foo|
foo.set_attribute('y8st07ef7u')
end
render json: foos.to_json(:methods => :virtual), status: 200
end
Foo_model设置
class Foo < ActiveRecord::Base
belongs_to :user
attr_accessor:virtual
def set_attribute(path)
self.virtual = path
end
end
Foo_serializer设置
class FooSerializer < ActiveModel::Serializer
attributes :id, :virtual
has_one :user
end
富迁移设置
class CreateFoos < ActiveRecord::Migration
def change
create_table :foo do |t|
t.references :user
end
end
end
用户模型
class User < ActiveRecord::Base
has_many :foos
end
用户串行
class UserSerializer < ActiveModel::Serializer
attributes :id, :name
belongs_to :foo
end
当我替换“foo.to_json(:方法=>:虚拟)”与“FOOS”,串行器踢foo_controller和我得到返回的JSON代替USER_ID内部的用户的对象,但:虚拟不在JSON。
有没有我可以得到一个对象使用主动型串行两个虚拟的属性和相关对象的任何方式。
预先感谢您的帮助!