在RABL模板中访问子实例

Har*_*tty 4 ruby ruby-on-rails rabl

我有一个RABL模板,如下所示

object @user
attributes :name
child :contacts do
  # does not work
  if contact.is_foo?
    attributes :a1, :a2
  else
    attributes :a3, :a4
  end
end
Run Code Online (Sandbox Code Playgroud)

如何访问Contact模板块中的对象child?我需要在子实例上执行一些条件逻辑.

Har*_*tty 10

您可以通过声明block参数来访问当前对象.

object @user
attributes :name
child :contacts do |contact|
  if contact.is_foo?
    attributes :a1, :a2
  else
    attributes :a3, :a4
  end
end
Run Code Online (Sandbox Code Playgroud)

老答案

我最终使用了该root_object 方法,该方法返回给定上下文中的数据对象.

object @user
attributes :name
child :contacts do
  if root_object.is_foo?
    attributes :a1, :a2
  else
    attributes :a3, :a4
  end
end
Run Code Online (Sandbox Code Playgroud)