我有一些代码要从一个简单的类转换为一个 ActiveRecord 类。
初始代码如下所示:
但是,而不是Person.new
我使用Person.where
:
Person.new(:id => 1, :name => "Adam"),
和(为了符合上述目的而略微做作):
Person.where("id > ?", 0).order(id ASC").first # statement 1
而不是:
person ||= Person.new(:id => 3, :name => "Some default")
我有:
person ||= Person.where("id = 3")
这一切都很好,除了statement 1
返回 nil 时,在我的情况下,对于 30213 以上的 id。然后我得到这个:
@people[1].id
=> 30213
@people[2].id
NoMethodError: undefined method `id' for [#<Person id: 3, name: "Bob">]:ActiveRecord::Relation
from /Users/snowcrash/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-3.2.9/lib/active_record/relation/delegation.rb:45:in `method_missing'
奇怪的是,所有数据似乎都已正确初始化:
#<Person id: 3, name: "Bob"
我究竟做错了什么?