为什么单个记录查找返回一个数组? (Rails初学者)

我在返回单个对象的模型上有where操作。 但我似乎无法在对象表示法中使用它(它似乎返回一个对象为[0]的数组)。

store = Store.where("some_id = ?", some_id) puts store.name # doesn't work puts store # shows array with the object at [0] 

因为有时您不知道查询应返回多少个对象,因此为了保持一致性,您始终会获得一个数组。

要使用单个对象

 store = Store.where("some_id = ?", some_id).first 

如果您正在寻找模型的主要ID,您也可以使用

 store = Store.find(some_id) 

如果没有找到对象,它将引发RecrodNotFoundexception(默认情况下由rails处理为404)。

还有动态查找器

 Store.find_by_some_id(some_id) 

他们相当于

 Store.where(:some_id => some_id).first 

rails 3.x中的where子句将始终返回并且arel objec,您可以将其用于方法链接。

因此where子句的return语句总是一个数组。

要访问您必须执行的第一个元素

如Jakub所建议的object.first