2015-08-27 3 views
0

У меня есть немного сложная модель для моих «вложений», относящаяся к «цитате». У меня есть модельный «порядок», который мог бы использовать эту модель, но вложения являются отдельными. Могу ли я иметь 2 "owned_to's" в вложениях и устанавливать только id для 1? Есть ли штраф за это, просто создав модель вложения специально для приложений заказа?Рельсы, которые меняют, кто выбрал модель «принадлежит», изменив идентификатор модели

ответ

1

Я думаю, что вы ищете полиморфную ассоциацию.

http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

+0

Спасибо, что то, что я искал. Хотя из любопытства, это все еще плохая идея, если у меня есть модель, которая принадлежит_to: order и belongs_to: quote, то только дать ей один id? Если да, то почему? Поскольку это уже очень используется, я бы предпочел не менять имена моделей везде для:: new_name. – Suavocado

+0

Если вы используете его, у вас будут два поля в качестве внешних ключей, поле id и поле типа, так что это будет более медленный поиск. Вы можете улучшить это с помощью индекса. Это займет больше места в БД, так как теперь у вас есть дополнительное поле строки и, возможно, индекс. Я бы сказал, что единственным преимуществом является то, что вам нужны все вложения в одной таблице, потому что вы будете работать с ними как отдельный объект независимо от связанной таблицы, и у вас будет много таких таблиц, чтобы использование SQL UNION стало громоздким. – dinomix

+1

Если вы сохраняете идентификатор вложения в таблицах котировок и заказов, это совершенно нормально, поскольку вы просто повторно используете одно изображение. Если вы сохраняете идентификатор заказа и идентификатор цитаты в таблице вложений, в которую входит полиморфная форма. – dinomix

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