2013-12-06 2 views
0

У меня такие модели Supplier и Role.
Поставщик должен иметь одну роль, одна роль может принадлежать нескольким поставщикам,
, поэтому я не хочу добавлять внешний ключ в модель ролей
Я не буду создавать все роли в начале, а затем добавить роль в поставщик, когда я хочу
Есть ли способ сделать это?has_one ассоциация без внешнего ключа?

+0

RE Ваше название: ассоциации без внешних ключей невозможны. Одна модель или другая должна иметь внешний ключ. – meagar

ответ

2

Иностранный ключ в этом случае должен находиться в Supplier. Вы не можете поместить его в Role, если Role может принадлежать многим поставщикам.

Это делает связь belongs_to по соглашению Rails, а не has_one.

Вашему Supplier необходим столбец под названием role_id и ассоциация belongs_to :role. Ваш Role может иметь has_many :suppliers, если вы хотите, чтобы найти всех поставщиков, которые используют данную роль.

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