0

我正在尝试使用 ActiveRecord 运行一个简单的提取,但我对结果感到困惑。这是我要运行的代码

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

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

c.name

它输出

=> "Child"

代替

=> "John Doe"

如果我跑

c = Child.find_by_name("John Doe")

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

4

1 回答 1

3

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

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

请注意,nil如果没有查询结果。

于 2013-11-09T22:34:02.740 回答