我正在使用RABL来渲染JSON。 我有这些模型:
Project
Task
User
“show project”操作应该导致呈现项目的详细信息,包括项目中的任务列表,但只允许用户被允许查看的那些。
到目前为止,我已将所有任务添加到项目show.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
我确定我的用例不是那么独特。有没有更直截了当的方法呢?
答案 0 :(得分:0)
我会将您的模型中的查询重构为一个名为specific_tasks
的方法,然后从RABL调用这样的内容:
child specific_tasks: :tasks do
extends "task/show"
end