在类数组中查找类对象时很麻烦
|
我正在使用Ruby on Rails 3.0.7,并且我想了解如何处理以下代码以便检索具有指定“ 0”的类对象。
在我的查看文件中,我有:
@records = Users.all # This returns an array (class)
在另一个文件(部分模板)中,我想检索例如id
1的用户,但是如果这样做:
@records.find(1)
我得到所有记录的enumerator
(类):
<Enumerator: [<Users id: 1, ... ] >
如何找到带有“0ѭ1”(或其他ID)“ aààlàRuby on Rails Way”的用户?
更新
我在视图文件中使用@records = Users.all
,因为我的目的是尽量减少对数据库的调用,因为我需要遍历几乎所有记录并检查它们的存在。例如,如果我这样做:
some_hash.each { |key, value|
put User.find(value)
}
然后进入日志文件,我会看到很多数据库请求。
没有找到相关结果
已邀请:
4 个回复
替秀宝
编辑 尽管如果您需要为每个用户做些事情,并且需要通过id快速访问它们,我可能会在控制器中做类似的事情。即使速度不是真的更快,但可读性更高(无论如何对我来说):
然后,您可以执行以下操作:
宦哨抹存胳
代替
。
将立即查询数据库并返回一个数组,而
将返回一个
对象,您可以将其链接进一步查询。在这种情况下,除非您尝试以某种方式检查或枚举结果,否则不会打数据库
递劝臼类洪
返回Enumerator类的对象(与Enumerator类本身不同)。 正如您所注意到的,这里的问题是,
是一个数组,而不是ActiveRecord对象,而
(从
继承-当没有给出块时,它返回一个Enumerable类的对象)是不同的方法为
(即
)。 您应该做的是,在控制器中,选择所需的一个用户记录:
...然后直接在模板中使用
。通常,您应该避免在模板中进行ActiveRecord查找(例如
)。这种逻辑应该在您的控制器中发生。
队辅坟阮阶