У меня есть модель сервиса с заголовком: строка описания: строка дата: дата и время. Я хотел бы реализовать систему для создания нескольких служб на основе шаблонов дат, например, когда пользователь создает новый сервис на 20 октября, он может выбрать «повторять» его один раз в месяц в течение 5 месяцев. Окончательный результат должен состоять в том, что будет создано 6 сервисов: 20 октября, 20 ноября и т. Д.
То, как я это реализовал, работает, но действительно ужасно. У меня есть что-то вроде этого на мой взгляд:
<input type="radio" name="each" value="none" checked="true"/>No<br/>
<input type="radio" name="each" value="week"/>Each week for <input type="text" name="weeks_number" /> weeks.<br/>
<input type="radio" name="each" value="month"/>Each month for <input type="text" name="months_number" /> months.<br/>
В моем контроллере я вычисляю даты, когда будут выполняться различные службы, затем создаю N объектов службы (где N - это число, указанное в params [: days_number] или params [: months_number]) и сохраняю каждый из них.
Звучит не очень хорошо, правда? Прежде всего, я думал о том, чтобы перенести всю логику создания «нескольких» сервисов в модель. Следующая большая вещь: как очистить вид и контроллер? Я бы хотел, чтобы мой контроллер был таким простым, как
@service = Service.new(params[:service])
Чтобы сделать это, мне нужно что-то изменить в модели (это следует назвать виртуальные атрибуты ), чтобы контроллер мог поверить, что что-то вроде
@service.repeat_method = "month"
@service.repeat = 6
на самом деле имеет смысл и приведет к созданию 6 разных строк в моей БД при вызове @ service.save.
Вот где я застрял и нуждаюсь в помощи. Имеет ли смысл мои рассуждения? И как это реализовать?
Спасибо.