Найдите или создайте полем, не работает

У меня есть образцовый caleld SpacialBody, и я должен отобрать некоторые записи так прежде всего, я добавил это к своему seeds.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 => ноль SpacialBody.find_or_create_by_name ("Соль") NoMethodError: неопределенный метод generated_methods' for nil:NilClass from /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/whiny_nil.rb:52:inmethod_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:inassign_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:inassign_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инициализируйте' от/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:infind_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:inmethod_missing' от (irb):3

Я использовал find_or_create_by_field в других проектах без инцидента, и я не вижу ничего различного в своей установке здесь.

Его единственные эта модель, которая имеет проблему, других в том же проекте, хорошо работают.

1
задан Arcath 31 July 2010 в 08:25
поделиться

1 ответ

facepalm

с использованием класса и типа в качестве полей в модели .... не очень хороший ход

оба являются зарезервированными именами, которые вызывают сбой ActiveRecord при построении методов.

2
ответ дан 2 September 2019 в 22:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: