#ruby-on-rails #ruby-on-rails-3 #templates #model
#ruby-on-rails #ruby-on-rails-3 #шаблоны #Модель
Вопрос:
Пользователи могут создавать опросы. В опросе есть вопросы, а на вопросы есть варианты ответов (т. Е. вопрос с множественным выбором).
Что я хочу сделать, так это создать опрос templates…so пользователи могут одним нажатием кнопки создать новый опрос с предварительно заданными вопросами и вариантами ответов.
У нас уже есть функционирующее приложение, так что вопрос не в этом. И у нас уже есть возможность дублировать / копировать / клонировать опросы. Также не вопрос.
Вопрос в том, как мне создать набор предопределенных опросов / вопросов / вариантов ответов, к которым имеет доступ любой пользователь приложения?
Должен ли я сохранять все настройки в виде хэша в какой-то templates
таблице (а затем просто запускать Survey.create({:questions => {:answers =>{}})
? Или какой-то другой метод, о котором я просто не думаю?
Имеет ли это смысл? Требуется еще какое-либо разъяснение?
Ответ №1:
Вы могли бы использовать наследование одной таблицы для модели опроса, чтобы различать опросы и SurveyTemplates. Таким образом, вы также можете лучше интегрировать авторизацию.
При использовании STI в Rails модели необходим атрибут :type, и Rails сохраняет имя класса в этом атрибуте для каждой записи.
Смотрите:
http://code.alexreisner.com/articles/single-table-inheritance-in-rails.html
Ответ №2:
Почему бы вам не добавить флаг (boolean) с именем is_template
в модель опроса? Затем вы можете просто создать обычный опрос и установить is_template
флаг high (высокий). Затем пользователи могут просматривать все опросы с этим установленным флагом и копировать их.