我正在使用 RABL 来呈现 JSON。我有这些模型:
Project
Task
User
“显示项目”操作应导致项目详细信息的呈现,包括项目中的任务列表,但仅允许用户查看。
到目前为止,我已将所有 Tasks 添加到 Projectshow.rabl
中,并且运行良好:
child tasks: :tasks do
extends "task/show"
end
有没有办法告诉 RABL 只渲染满足给定条件的任务?- 我已经在控制器中有逻辑,但我不知道如何告诉 RABL...
- 更新 -
我想出了一种方法,方法是添加一个“代码”部分,传入项目对象,然后从可见任务构建散列并渲染它。这可行,但它非常难看,并且首先破坏了使用 RABL 的目的。它看起来大致是这样的:
code :tasks do |project|
project.tasks.visible_by(current_user).inject([]){|arr, task| ...}
end
我确信我的用例不是那么独特。有没有更直接的方法来做到这一点?