2012-07-01 61 views
0

我正在使用RABL呈現JSON。 我有這些模型:如何篩選由RABL生成的視圖中的結果

  1. Project
  2. Task
  3. User

「顯示項目」的行動應導致項目的細節呈現,包括任務列表在項目中,但只有用戶被允許查看

到目前爲止,我已經添加了所有的任務到項目show.rabl的,並且它的正常工作:

child tasks: :tasks do 
    extends "task/show" 
end 

有沒有辦法告訴Rabl的只渲染回答給定條件的任務? - 我已經有該邏輯控制器,但我想不出如何告訴給Rabl的......

--update--

我已經想通辦法通過添加一個「代碼」部分,傳入項目對象,然後從可見任務構建一個哈希並渲染它。這很有效,但它非常難看,並且首先破壞了使用RABL的目的。 它看起來大致這樣:

code :tasks do |project| 
    project.tasks.visible_by(current_user).inject([]){|arr, task| ...} 
end 

我敢肯定,我的使用情況是不是唯一的。有沒有更直接的方法來做到這一點?

回答

0

我會重構查詢到你的模型到一個名爲specific_tasks然後方法調用像這樣從Rabl的:

child specific_tasks: :tasks do 
    extends "task/show" 
end 
+1

總的來說,我喜歡這種方法,但是,我需要渲染特定於CURRENT_USER東西,而這通常不是我想讓模型知道的事情。 – davidrac