为什么使用ids数组查找返回一个数组,而带有ids数组的`where`返回一个ActiveRecord :: Relation

时间:2013-11-24 03:44:57

标签: ruby-on-rails activerecord

当我这样做时:

[29] pry(main)> u=User.where("id in (?)",[1,2])
=> ActiveRecord::Relation
[31] pry(main)>

,而:

[33] pry(main)> u=User.find([2,3])
...
[34] pry(main)> u.class
=> Array
[35] pry(main)>

我知道这些都非常相似,但为什么找不到数组会返回一个ActiveRecord :: Relation。有一些深层原因吗?我原本以为使用id数组的find会返回一个ActiveRecord :: Relation。

THX

1 个答案:

答案 0 :(得分:0)

实际上在rails中查找调用find_with_ids方法,如果你将一个数组作为参数传递给它,并且find_some的工作方式如下,则调用find_some:   result = where(table [primary_key] .in(ids))。to_a 即将activerecord:关系对象转换为数组。因此结果提供了一个数组。

您可以查看他们的源代码