2016-01-14 1 views
2

У меня есть User (name:string, email:string, admin_id:integer) модель и модель admin_profile (id:integer, type:string, address:text, skills:string)Не получать все атрибуты для HAS_ONE сериализатором

Пользователь has_one admin_profile если admin_id присутствует.

Вот сериализатору

class UserSerializer < ActiveModel::Serializer 
    attributes :name, :email, :admin_id 
    has_one :admin_profile, :if => :admin_id? 
end 

Проблема заключается в том, что я только получаю идентификатор и тип, когда из API, когда я вынести пользователя. Есть ли способ включить все атрибуты admin_profile в пользователя, если пользователь является администратором?

+1

вы можете использовать 'attributes: name,: email,: admin_profile', чтобы включить' admin_profile'. Если у пользователя нет admin_profile, запись 'admin_profile' ответа JSON останется пустой – MrYoshiji

+0

Это сработало, спасибо – Akadisoft

ответ

0

Создание мой комментарий Ответ на будущее:

Вы можете использовать attributes :name, :email, :admin_profile включить admin_profile. Если User не имеет admin_profile, запись admin_profile ответа JSON останется пустой.

Обратите внимание, что новая функция только что объединилась, которая делает именно то, что вы хотите:

has_one :admin_profile, if: :is_admin? 

Он доступен в мастере, который станет RC4 очень скоро.