У меня очень раздражающая и трудно выясняемая ошибка в моем проекте rails.
После создания группы моделей и их связей я хочу перечислить их.
Но я продолжаю получать сообщение об ошибке «Не могу дублировать NilClass». То есть, пока я не перезагружу сервер. Тогда я могу перечислить их просто отлично.
При отладке этой проблемы выясняется, что ошибка возникает в методе в одной из моделей, когда я пытаюсь вернуть значение одного из его атрибутов. У меня есть точка останова в методе, и это то, что я получаю в отладчике:
(rdb:5) self
#<Bar id: 1037, foo: 2237, created_at: "2009-06-09 19:52:11", updated_at: "2009-06-09 19:52:47">
(rdb:5) foo
TypeError Exception: can't dup NilClass
(rdb:5) attributes[:foo]
nil
(rdb:5) attributes["foo"]
2237
Мне не важно, перезагрузить ли я страницу. Я получаю ту же ошибку до перезапуска сервера.
Моя модель в основном выглядит следующим образом (ошибка возникает в методе baz):
class FooBar < ActiveRecord::Base
belongs_to :foo, :class_name => "BarFoo", :foreign_key => "foo", :dependent => :destroy
belongs_to :bar, :class_name => "BarFoo", :foreign_key => "bar", :dependent => :destroy
validates_presence_of :foo, :on => :create
def baz
[foo, bar].compact
end
end
Моя схема выглядит так:
create_table "foo_bar", :force => true do |t|
t.integer "foo"
t.integer "bar"
t.datetime "created_at"
t.datetime "updated_at"
end
Обновление:
Прежде чем я получу больше ответов, указывающих, что: foo и "foo" не одно и то же: я знаю, что они не равны, но это не проблема здесь
И я только что подтвердил, что read_attribute ("foo") возвращает то же самое, что read_attribute (: foo). Также как и self [: foo] и self ["foo"]. Ни один из них не возвращает ноль. Однако все они возвращают идентификатор foo вместо самого foo.