1

抱歉,如果这是一个新手问题,搜索 google 和 SO 没有任何结果,我可能没有使用正确的术语,但是这里......

如果我有一个带有名称的用户模型,并且我想找到一个“约翰”,我知道我可以做到

User.find_by_name 'john'. 

伟大的。

但是假设我有一个我想要检索的名称列表。我可以为列表中的每个名称做一个 find_by - 导致多个 sql 查询。或者我可以做 User.all 并根据我的列表过滤内存中的结果。

两者似乎都非常昂贵且可扩展性不强,在原始 sql 中我可以只写:

select * from users where name in ('john', 'peter', 'susan', ... );

并在一个查询中获取全部内容。

我错过了一个技巧还是主动记录也可以做到这一点?如果不是,那么从 rails 3 应用程序中推荐的最佳方法是什么?

4

2 回答 2

2

试试这个

names = ['John', 'Mary']
users = User.where(name: names)
于 2012-06-27T10:59:45.570 回答
0

User.find_all_by_name(names)也有效,尽管它现在可能被认为是老派。

于 2012-06-27T13:53:49.510 回答