当我使用 rabl 为标准 RESTful 控制器方法返回 JSON 时,我认为我有一个非常基本的情况......
首先假设我与父母和孩子有典型的一对多关系(假设客户和帐户):
class Customer < ActiveRecord::Base
has_many :accounts
end
在我的客户控制器中,我有索引和编辑 - 索引我只想返回所有客户(没有帐户)并编辑我想返回特定客户及其所有帐户的位置。由于明显的性能(N + 1)原因,我不想使用索引返回帐户。
在我的 rabl 中,我有以下内容:
#index.rabl (for listing all customers)
collection :@customers
extends "customers/_customer"
和
#edit.rabl (for editing a single customer)
object :@customer
extends "customer/_customer"
我正在为索引和编辑重用 _customer.rabl。
#_customer.rabl
object :@customer
attributes :name, ......
if @include_accounts
child :accounts do
extends "accounts/_account"
end
end
我在我的编辑(控制器)中设置了@include_accounts,而不是索引——但这不起作用——基本上这里的实例变量(@include_accounts)永远不会被传递下去。实现这个的正确模式是什么?