为什么单个记录查找返回一个数组? (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