【发布时间】:2012-08-23 16:52:37
【问题描述】:
用户拥有_many 个项目 物品属于_客户
使用 mongoid(我不认为它是特定于 mongoid 的,但无论如何)我需要按给定用户收集所有客户端。目前我使用:
@clients = current_user.items.map{|c| c.client}
但肯定不好,也不可接受。最好的实施方式是什么?
【问题讨论】:
-
这并不可怕。但是,最好通过一些伪代码来描述您希望最终语法的样子。基本上听起来你想在你的代码中应用一些语法糖,并有更清晰的代码,可能是这样的:clients = user.all_clients
-
首先,因为结果是有一个数组,它不是很方便。其次,我不确定,但我认为有大量的记录,把它放在 ruby 的肩膀上不是很好吗? (再次,它是 mongodb)
-
知道了,我想你有几个选择,要么手工制作一个 SQL 语句来做你想做的事,要么使用 ActiveRecord 包含(急切加载)。在两者之间做出决定可能是特定于应用程序的。 link 查看 Eager Loading 部分
标签: ruby-on-rails ruby-on-rails-3 mongoid