У меня есть модель caleld SpacialBody, и мне нужно заполнить некоторые записи, поэтому сначала я добавил это в свои seed.rb
[
["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.new => # SpacialBody.find_by_name ("Sol") => nil SpacialBody.find_or_create_by_name ("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
method_missing 'из /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/attribute_methods.rb:356:in respond_to?'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2906:in
assign_attributes' из / var / lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2902:in each'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2902:in
assign_attributes 'из /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2775: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_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
initialize' из / var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1963:in new'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1963:in
find_or_create_by_name 'из /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1975:in send'
from /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1975:in
method_missing 'from (irb): 3
Я использовал find_or_create_by_field в других проектах без отступа, и я могуЗдесь я не вижу ничего другого.
Только эта модель имеет проблему, другие в том же проекте работают нормально.