[
["Sol",0,0,0,"standard"]
].each do |body|
nb=SpacialBody.find_or_create_by_name(body[0])
nb.name = body[0]
nb.x = body[1]
nb.y = body[2]
nb.type = SpacialBody::Types[body[3]]
nb.class = body[4]
nb.save
end
这就产生了一个错误。然后我进入控制台测试代码,发现发生了这样的情况:
SpacialBody.新
=>#
SpacialBody.按名称查找(“Sol”)
=>无
NoMethodError:未定义的方法
generated_methods' for nil:NilClass
from /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/whiny_nil.rb:52:in
'缺少方法'
respond_to?'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2906:in
指定属性'
each'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2902:in
指定属性'
attributes='
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1965:in
发送'
来自/var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active\u record/base.rb:1965:in
find_or_create_by_name'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2475:in
'初始化'
new'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1963:in
查找或按名称创建
来自/var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active\u record/base.rb:1975:in
send'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1975:in
起始(irb):3
我在其他项目中使用了find\u或create\u by\u字段,没有任何鼓励,我在这里的设置中看不到任何不同。
只有这种模式有问题,其他在同一个项目的工作良好。