活动记录find_by在哪里收集属性?

时间:2012-06-27 10:58:19

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

很抱歉,如果这是一个新手问题,搜索谷歌和SO什么都没有,我可能没有使用正确的条款,但这里去....

如果我有一个带有名字的用户模型,我想找一个'john',我知道我可以做到

User.find_by_name 'john'. 

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

两者看起来都非常昂贵且不具备扩展性,当我在原始sql中写道:

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

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

我是否错过了一个技巧或活动记录也可以这样做?如果没有,那么在rails 3应用程序中建议的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

试试这个

names = ['John', 'Mary']
users = User.where(name: names)

答案 1 :(得分:0)

User.find_all_by_name(names)也有效,虽然它现在可能被认为是旧学校。