Есть ли способ в Active Record попасть туда? - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть модель User, у которой есть has_many Roles, а у Role много пользователей, все через промежуточную таблицу. В конце Роль has_many / has_one цель. Я хочу достичь целей через пользователя или позвольте мне сказать, что я хочу сделать что-то вроде пользователя has_many: цели через: роли. Когда я делаю это и пытаюсь установить user.goals = Goal.all. Это дает следующее исключение.

ActiveRecord :: HasManyThroughCantAssociateThroughHasOneOrManyReflection: Невозможно изменить ассоциацию «Пользователь # цели», поскольку исходный класс отражения «Цель» связан с «Аккаунтом» через: has_one.

Есть ли способ достичь этого. Я не вижу ничего подобного в RailsAPI.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2011

Так как вы не опубликовали детали моделей, я предполагаю следующее на основании ошибки:

User has_one Account
User has_many Goals
Goal belongs_to User
Goal has_one Account

Если это так, то вы нарушаете эту модель, связывая всеЦели для одного пользователя, и поэтому цель должна иметь has_many, а НЕ has_one Аккаунт

0 голосов
/ 05 апреля 2011

Вам не нужно явно устанавливать его, вы должны просто сделать это;

user.goals

, если в вашей модели есть следующее:

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