Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在json响应中包含子对象_Ruby On Rails_Ruby_Mongoid - Fatal编程技术网

Ruby on rails 如何在json响应中包含子对象

Ruby on rails 如何在json响应中包含子对象,ruby-on-rails,ruby,mongoid,Ruby On Rails,Ruby,Mongoid,嗨,我试图在呈现json doing user.all时包含用户角色 我正在使用RubyonRails和Mongoid 我只在回复中得到角色id role_id":"56cb596bc226cb5c04efd1cb 用户模型: class User include Mongoid::Document include ActiveModel::SecurePassword has_many :role belongs_to :store has_many :orders

嗨,我试图在呈现json doing user.all时包含用户角色 我正在使用RubyonRails和Mongoid

我只在回复中得到角色id

role_id":"56cb596bc226cb5c04efd1cb
用户模型:

class User
  include Mongoid::Document
  include ActiveModel::SecurePassword

  has_many :role
  belongs_to :store
  has_many :orders
榜样:

class Role
  include Mongoid::Document

  belongs_to :user

  field :name, type: String
  field :active, type: Mongoid::Boolean
我得到的答复是:

    {"_id":"...","api_key":"...","email":"jesus@drinkz.io","name":"... Garcia","password_digest":"...","promotion_ids":[],
"role_id":"56cb596bc226cb5c04efd1cb"}
如何获得响应:get/api/v1/users

def index
    @user = User.first
    respond_with @user
  end

如何在响应中嵌入角色?

如果不包含角色,您将获得仅代表用户的JSON。你可以像下面这样做

def index
  @user = User.first
  respond_with(@user, :include => :role)
end
传统的方式是

def index
  @user = User.first
  respond_to do |format|
    format.json { render :json => @user.to_json(:include => :role) }
  end
end

如果不包括该角色,您将获得仅代表用户的JSON。你可以像下面这样做

def index
  @user = User.first
  respond_with(@user, :include => :role)
end
传统的方式是

def index
  @user = User.first
  respond_to do |format|
    format.json { render :json => @user.to_json(:include => :role) }
  end
end

如果尚未使用gem文件,请将gem“活动\模型\序列化程序”添加到gem文件中。然后使用

rails generate serializer user
然后将以下内容添加到app/serializers/user_serializer.rb文件中

class UserSerializer < ActiveModel::Serializer
  attributes :id, :email,:name, :password_digest, :promotion_ids, :api_key
  has_many :roles
end
class UserSerializer
如果您尚未使用gem文件,请将gem“active\u model\u serializers”添加到gem文件中。然后使用

rails generate serializer user
然后将以下内容添加到app/serializers/user_serializer.rb文件中

class UserSerializer < ActiveModel::Serializer
  attributes :id, :email,:name, :password_digest, :promotion_ids, :api_key
  has_many :roles
end
class UserSerializer
您是如何得到响应的?我使用的是get-on/api/v1/users和returning-User.first您是如何得到响应的?我使用的是get-on/api/v1/users和returning-User.first