отсутствующий атрибут в activerecord - PullRequest
8 голосов
/ 25 августа 2009

У меня есть модели Foo и Bar. Bar имеет столбец foo_id. Когда я звоню Bar.foo_id я получаю сообщение об ошибке missing attribute: foo_id

Имейте в виду, что это не неопределенная ошибка метода, и столбец определенно находится в БД. Каковы некоторые распространенные причины этого?

Спасибо

Ответы [ 3 ]

37 голосов
/ 25 августа 2009

Возможно, это как-то связано с вашим методом find ? Например, вы сделали: select в находке:

Foo.find(:all, :select => "firstvar, secondvar")

В этом случае вы можете получить доступ только к firstvar и secondvar, даже если вы определили foo_id

Надеюсь, это поможет! =)

2 голосов
/ 25 августа 2009

Вы звоните

Bar.foo_id

или

bar = Bar.new
bar.foo_id

Если у вас нет переменной класса для Bar, вам нужно взглянуть на foo_id в экземпляре Bar. Надеюсь, это поможет. Приветствия.

0 голосов
/ 20 августа 2018

Это происходит со мной время от времени. Моя причина - почти всегда давно забытый метод поиска в классе, который задает поля в .select (), а отсутствующий атрибут (часто добавляемый долго после того, как я определил искатель) теперь вызывается где-то в приложении, но не указан в этом .select ().

Ошибка достаточно распространена, чтобы получить предупреждение в Rails Guides: " Будьте осторожны, потому что ... "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...