Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 获取所有关联记录的活动记录方法_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 获取所有关联记录的活动记录方法

Ruby on rails 获取所有关联记录的活动记录方法,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有一张客户表和一张订单表。每个客户都有多个订单,当我对客户执行操作时,我会得到所有客户,但不是他们的订单。是否有办法同时获得客户.all.associations 获取: [ { : id=>1, : name=>"abc" }, { : id=>2, : name=>"xyz" } ] 想要获得: [ { : id=>1, : name=>"abc" }, { : id=>2, : n

我有一张客户表和一张订单表。每个客户都有多个订单,当我对客户执行
操作时,我会得到所有客户,但不是他们的订单。是否有办法同时获得
客户.all.associations

获取:

[
{
    : id=>1,
    : name=>"abc"
},
{
    : id=>2,
    : name=>"xyz"
}
]

想要获得:

[
{
    : id=>1,
    : name=>"abc"
},
{
    : id=>2,
    : name=>"xyz"
}

]

如果您想获得所有客户的订单,那么

Customer.includes(:orders)
如果需要将其转换为JSON或哈希格式,则

Customer.includes(:orders).as_json(include: :orders)

如果你想得到所有客户的订单,那么

Customer.includes(:orders)
如果需要将其转换为JSON或哈希格式,则

Customer.includes(:orders).as_json(include: :orders)

我甚至不必做
Customer.includes(:orders)
,因为我的关联已经描述了这一点。。我只想拥有
Customer.all.whatever.as_json
,这给了我完整的json是可能的吗?旁注:你需要
Customer.includes(:orders)
来避免
N+1
查询问题。我甚至不必做
Customer.includes(:orders)
,因为我的关联已经描述过了。。我只想拥有
Customer.all.whatever.as_json
这给了我完整的json,这是可能的吗?旁注:您需要
Customer.includes(:orders)
来避免
N+1
查询问题。正如其他一些回答者所说,您可以使用includes来延迟加载关系。但要获得所需的输出,可能必须使用序列化程序。正如其他一些回答者所说,这可能会有所帮助,您可以使用includes来延迟加载关系。但要获得所需的输出,可能必须使用序列化程序。这个可能会有用的谢谢Mayank!工作正常。还有一个请求,我还将在查询中的
日期字段中创建
更新:orders
模块中排除您可以在as_json方法中使用exclude
Customer.includes(:orders)。如果您还需要从
orders
表中删除
created\u at
updated\u at
,则可以使用
Customer.includes(:orders)。作为json(除了:[:created\u at,:updated\u at],包括:[orders:{[:created_at,:updated_at]}])
谢谢Mayank!成功了。还有一个请求,我还得到了查询中的
created_at
updated_at
日期字段。我如何将它们从
:orders
模块中排除您可以在as_json方法中使用排除。
客户。包括(:orders)。as_json(除了:[:created_at,:updated_at],include::orders)
如果您还需要从
orders
表中删除
created_at
updated_at
,那么您可以使用
Customer.includes(:orders)。作为json(除了:[:created_at,:updated_at],包括:[订单:{except:[:created_at,:updated_at]])