私のアプリケーションには、複雑なデータベース構造があります。呼び出しに対する JSON 応答を生成するには、多数の結合テーブルからデータを取得する必要があります。
必要なすべてのデータを取得する SQL クエリを作成しました (rails を使用includes
)。しかし、ビューに結果が表示されたので、実際にレンダリングする正しい方法がわかりません。
私の実際のコードではなく、簡単な例:タスクを含むサブプロジェクトを含むあり、クエリがそれらすべてのネストされた構造をいくつかのロジックに従ってフィルター処理して返すとします。
class Project < ActiveRecord::Base
...
def with_sub_projects_visible_by(user)
includes(...complex join with sub projects and tasks...)
.where(...complex condition...)
end
end
コントローラーには、次のようなものがあります。
def show
@project_with_full_details = Project.find(params[:id]).with_sub_projects_visible_by(current_user)
end
@project_with_full_details
データベースを再度呼び出さずにすべてのデータを含むページをレンダリングする単純なビュー コードを作成する方法はありますか? 私が試したことから、単に電話をかけるだけではうまくいき@project_with_full_details.sub_projects
ません。データベースを呼び出して、クエリ結果に含まれるはずのフィルタリングされたものではなく、関連する sub_projects の完全なリストを取得します。
(JSON をレンダリングしているので、ビューに RABL を使用していますが、それほど重要ではありません。ERB の例はまったく問題ありません)