Модель имеет два атрибута, которые принадлежат другой модели - PullRequest
0 голосов
/ 05 августа 2011

У меня есть следующая модель:

 Greeting

  belongs_to :icon
  belongs_to :icon, :foreign_key => :user_icon

Мне нужно сохранить icon_id, а также идентификатор user_icon на случай, если у меня нет зарегистрированного пользователя.

Этоправильный?Смогу ли я получить доступ к значку, выполнив следующие действия:

@greeting.icon.name
@greeting.user_icon.name

Я хочу улучшить этот вопрос, поэтому позвольте мне объяснить его лучше:

Я хочу сохранить два объекта из одного и того жемодель в другой модели.

Таким образом, Приветствие принадлежит Icon, но у меня будет два поля в таблице Приветствия для внешних ключей из таблицы Значков, но помеченные по-другому.

Я вызываю один атрибут внешнего ключа icon_idи другой user_icon_id.

Для этого необходимо сделать следующее:

Greeting

belongs_to :icon
belongs_to :icon, foreign_key => :user_icon_id

Ответы [ 2 ]

1 голос
/ 07 августа 2011

Почти правильно, вам нужно что-то вроде этого:

belongs_to :icon
belongs_to :user_icon, :class_name => "Icon", foreign_key => :user_icon_id

Если вы измените имя поля в ассоциации has_one, has_many or belongs_to таким образом, что Rails не сможет преобразовать его в имя модели, вам нужно указать Rails, какую модель вы на самом деле имеете в виду, поэтому :class_name.

0 голосов
/ 05 августа 2011

Неа.Вам нужен

belongs_to :user_icon, :foreign_key => :user_icon

Если вы хотите иметь аксессорreeting.user_icon, используя значок пользователя внешнего ключа в вашей базе данных.

...