2016-02-24 3 views
0

Привет Я пытаюсь включить роли пользователя при визуализации JSON делает User.all Я использую рубин на рельсах и MongoidКак включить суб-объект в JSON ответ

я только получаю ROLE_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":"[email protected]","name":"... Garcia","password_digest":"...","promotion_ids":[], 
"role_id":"56cb596bc226cb5c04efd1cb"} 

Как получить ответ: GET/API/v1/пользователей

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

Как я могу вставлять роли в ответе?

+0

как вы получаете ответ? – shivam

+0

Я использую get on/api/v1/users и возвращаю User.first –

ответ

1

Добавить Gem «active_model_serializers» на ваш Gemfile, если вы не используете его. Затем сформировать сериалайзер пользователя с помощью

rails generate serializer user 

Затем добавить следующее приложение/сериализаторы/файл user_serializer.rb.

class UserSerializer < ActiveModel::Serializer 
    attributes :id, :email,:name, :password_digest, :promotion_ids, :api_key 
    has_many :roles 
end 
2

Вы получите 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 
+0

Черт, это было так просто? большое спасибо –

Смежные вопросы