我如何使用:仅与:包含在Rails应用程序中的to_xml中?

时间:2011-08-31 08:28:45

标签: ruby-on-rails xml ruby-on-rails-3 api

我正在尝试使用两者:only和:在Rails应用程序中调用to_xml调用中的选项。这是代码:

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 个答案:

答案 0 :(得分:1)

是的,你可以。它对我来说很完美。

>> 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