2013-11-09 70 views
0

我试图使用ActiveRecord运行一个简单的提取,我对结果感到困惑。这是我试图运行的代码使用ActiveRecord混淆.where查询结果

c = Child.where("name LIKE ?", "%John D%") 

我在我的数据库中有一个子模型和相应的表。数据库中存在“John Doe”的记录,输出为在轨道控制台中找到的记录。但是,当我执行

c.name 

它输出

=> "Child" 

,而不是

=> "John Doe" 

如果我运行

c = Child.find_by_name("John Doe") 

一切工作正常。我确信这里有一个明显的解决方案,但我似乎无法弄清楚。

回答

3

where返回ActiveRecord Relation。如果你做一个c.class,会给你ActiveRecord::Relation::ActiveRecord_Relation_Child。为了得到一个实际的对象,你可以这样做:

c = Child.where("name LIKE ?", "%John D%").first 

注意,这将是nil如果没有结果的查询。

+0

This Works。您还可以使用'c = Child.where(“name LIKE?”,“%John D%”)。all'来获得所有匹配结果的数组 –

+0

Yup!你可以用结果做很多事情:)。 – swilliams