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

Hop*_*eam 5 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

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

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

puts store.name  # doesn't work

puts store  # shows array with the object at [0]
Run Code Online (Sandbox Code Playgroud)

Jak*_*mpl 10

因为有时您不知道查询应该返回多少个对象,所以为了保持一致性,您总是得到一个数组.

要使用单个对象

store = Store.where("some_id = ?", some_id).first
Run Code Online (Sandbox Code Playgroud)

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

store = Store.find(some_id)
Run Code Online (Sandbox Code Playgroud)

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


Sim*_*tsa 5

还有动态查找器

Store.find_by_some_id(some_id)
Run Code Online (Sandbox Code Playgroud)

他们相当于

Store.where(:some_id => some_id).first
Run Code Online (Sandbox Code Playgroud)