Как я могу использовать: только в сочетании с: include в to_xml в приложении Rails? - PullRequest
2 голосов
/ 31 августа 2011

Я пытаюсь использовать оба параметра: only и: include в вызове to_xml в приложении Rails.Вот код:

current_user.to_xml(
  :include => :subscription,
  :only => [:email, :username]
)

Результат выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <username>cristi</username>
  <email>cristi@example.com</email>
  <subscription>
  </subscription>
</user>

Проблема заключается в том, что в подписке есть больше полей, которые не включены.Я предполагаю, что это из-за опции :only.

Есть ли способ преодолеть это (показать все поля в элементе подписки), не используя :except в качестве опции в to_xml?

Я использую Rails 3.

1 Ответ

1 голос
/ 31 августа 2011

Да, вы можете.Это прекрасно работает для меня.

>> u = User.first
>> puts u.to_xml(:only => %w( id name ))
<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Simone Carletti</name>
  <id type="integer">1</id>
</user>

>> puts u.to_xml(:only => %w( id name ), :include => :domains)
<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Simone Carletti</name>
  <id type="integer">1</id>
  <domains type="array">
    <domain>
      <name>...</name>
      <id type="integer">0</id>
    </domain>
    <domain>
      <name>...</name>
      <id type="integer">0</id>
    </domain>
  </domains>
</user>

Убедитесь, что ассоциация :subscription правильная.Если это ассоциация один-ко-многим, вам нужно использовать множественную версию :subscriptions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...