Ruby on rails 活动记录按集合中的where属性查找_?

Ruby on rails 活动记录按集合中的where属性查找_?,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,很抱歉,如果这是一个新手问题,搜索谷歌,结果什么也没找到,我可能没有使用正确的术语,但这里是 如果我有一个有名字的用户模型,并且我想找到一个“john”,我知道我能做到 User.find_by_name 'john'. 太好了 但是假设我有一个要检索的名字列表。我可以为列表中的每个名称执行find_by,从而产生多个sql查询。或者我可以执行User.all并根据我的列表在内存中过滤结果 这两种方法似乎都非常昂贵,而且不具有很强的可扩展性,但在原始sql中,我可以编写: select *

很抱歉,如果这是一个新手问题,搜索谷歌,结果什么也没找到,我可能没有使用正确的术语,但这里是

如果我有一个有名字的用户模型,并且我想找到一个“john”,我知道我能做到

User.find_by_name 'john'. 
太好了

但是假设我有一个要检索的名字列表。我可以为列表中的每个名称执行find_by,从而产生多个sql查询。或者我可以执行User.all并根据我的列表在内存中过滤结果

这两种方法似乎都非常昂贵,而且不具有很强的可扩展性,但在原始sql中,我可以编写:

select * from users where name in ('john', 'peter', 'susan', ... );
在一次查询中得到全部信息

我是否错过了一个技巧,或者active record也能做到这一点?如果不是,那么在rails 3应用程序中推荐的最佳方法是什么?

试试这个

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

User.find\u all\u by\u name(名称)
也很有效,不过现在可能被认为是老派了