0

私はRABLを使用してJSONをレンダリングしています。私はこれらのモデルを持っています:

  1. Project
  2. Task
  3. User

「プロジェクトの表示」アクションにより、プロジェクト内のタスクのリストを含むプロジェクトの詳細がレンダリングされますが、ユーザーが表示を許可されているユーザーのみが表示されます

これまでのところ、すべてのタスクをプロジェクトに追加しましたが、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

私のユースケースはそれほどユニークではないと確信しています。それを行うためのより簡単な方法はありますか?

4

1 に答える 1

0

モデルへのクエリを呼び出されるメソッドにリファクタリングしてspecific_tasksから、RABLから次のようなものを呼び出します。

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