Будьте последовательны и используйте отдельную модель клиента и client_id
даже для клиентов, которые появляются только один раз. Если у вас есть и client_id
, и client_model
, у вас будет дополнительная сложность:
- Ваша проверка должна будет проверить оба и убедиться, что все согласовано.
- Вам нужно будет
o.client.try(:name) || o.client_field
и тому подобное повсюду только для отображения данных.
- Если вы в будущем измените структуру своих записей о клиентах, вам придется переформатировать свою «таблицу в таблице»
client_field
kludge.
- Любая основанная на базе данных отчетность перейдет от простого SQL к чудовищности LEFT JOINs и операторов CASE.
А это всего лишь пара вещей с моей головы.
Если вас беспокоит выпадающий список с большим количеством записей & mdash; и вы должны быть обеспокоены любым выпадающим списком, содержащим более ~ 20 записей & mdash; затем просто введите автозаполнение ввода текста или ограничьте выпадающий список до ~ 20 клиентов и используйте автозаполнение ввода текста для остальных (или, возможно, даже комбинированный блок на основе JavaScript); есть большая вероятность, что выпадающий список даже не будет использоваться вашими пользователями, бухгалтерами и другими людьми, которые часто вводят данные и выставляют счета, часто ненавидят необходимость тянуться к мышке.