2012-04-15 5 views
0

Я хотел бы иметь доступ только для чтения к атрибутам модели (: test), относящимся к другой модели (: запрос) ассоциацией has_many.Ошибка при использовании реляционного обратного вызова в методе

Я могу получить связанный тестовый объект для сохранения при создании и связывании нового запроса: но я не могу работать с атрибутами, связанными: test, в методе `before_create '.

Из того, что я читаю в API documentation я должен быть в состоянии использовать метод ассоциации (@test = @query.test.whatever) использовать «все» атрибут, но я получаю следующее сообщение об ошибке при попытке запустить этот код: private method 'test' called for nil:NilClass.

: запрос связан с: тест в belongs_to отношениях ...

Я попытался @test = @ query.test.build для создания экземпляра тестового объекта в моем методе, но это не работает, либо ,

+0

Можете ли вы опубликовать код для двух моделей? –

ответ

1

Вы просто получили столкновение имен. Каждый объект Ruby имеет свой частный метод test.

+0

Вот что мне было интересно ... ура. –

+0

Я переименовал модель «test» в «testcase», и я все равно получаю ту же ошибку. 'private method 'testcase' вызывается для nil: NilClass'. Так раздражает. Я уверен, что я просто делаю что-то глупое, но я не могу понять это ... –

+0

Переименования модели недостаточно. Вы должны переименовать свою ассоциацию ('belongs_to: testcase'). Также в вашей базе данных есть таблица под названием 'tests'. Вы также должны исправить это (самый простой способ: написать 'set_table_name: testcases' внутри вашей модели). – jdoe

Смежные вопросы