Почему мой идентификатор объекта ассоциации не заполняется? - PullRequest
4 голосов
/ 27 апреля 2011

В моем приложении Rails у меня есть две модели, Estimate и Client, каждая из которых имеет отношение belongs_to к State (как в штатах США).

Если я создам простой хеш, как это:

properties = {:state => State.first}

... Я могу собрать клиента в консоли Rails следующим образом:

c = Client.new(properties)

... и он показывает state_id из 1, как и ожидалось.

Однако , если я попробую то же самое с оценкой, как это:

e = Estimate.new(properties)

... он никогда не устанавливает state_id, поэтому я не могу сохранить ассоциацию.

Таблицы для Estimate и Client имеют идентичные столбцы state_id (int 11). Ассоциация такая же. Объект State такой же.

Что может быть причиной этой разницы?

Обновление

Эта проблема была attr_accessible, как указал Миша. Еще одним симптомом, который мы обнаружили, было то, что Estimate.state = State.first вернул NoMethodError: undefined method state=

1 Ответ

2 голосов
/ 27 апреля 2011

Вы установили attr_accessible в вашей Estimate модели?Если это так, state может быть недоступен и может быть установлен только так:

e = Estimate.new
e.state = State.first

Обновление

Обратите внимание, что state= является методом экземпляра, а не методом класса.

Это не работает :

Estimate.state = State.first

Это работает :

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