【发布时间】:2013-07-30 20:04:10
【问题描述】:
根据RABL documentation under "Child nodes",以下是可能的:
object @user
child :posts do |user|
attribute :title unless user.suspended?
end
这意味着块产生的user变量是父对象@user。
但是,当我尝试以下操作时:
collection @listings
child :address do |listing|
attribute :number_and_street unless listing.address_hidden?
end
我收到NoMethodError:
undefined method `address_hidden?' for #<Address:0x007fb83d6eaf80>
这意味着该块正在产生子地址对象,而不是文档所暗示的父 @listing 对象。
我能看到的唯一解决方法是address.listing.address_hidden?,这会导致数据库查询过多,所以我想避免这种情况。
我做错了吗?有什么办法可以解决这个问题吗?
【问题讨论】:
-
查看活动模型序列化器 - 比 rabl 恕我直言要简单得多
-
感谢@timpone,但我必须使用 RABL,因为它具有我需要的 Active Model Serializer 所没有的功能。
标签: ruby-on-rails serialization ruby-on-rails-3.2 rabl