0

我正在使用 RABL 来呈现 JSON。我有这些模型:

  1. Project
  2. Task
  3. 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

我确信我的用例不是那么独特。有没有更直接的方法来做到这一点?

4

1 回答 1

0

我会将查询重构为您的模型中的一个方法specific_tasks,然后从 RABL 调用类似这样的方法:

child specific_tasks: :tasks do
  extends "task/show"
end
于 2012-07-01T15:09:26.510 回答