Как создать «шаблон» записей в приложении Rails?

#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 (высокий). Затем пользователи могут просматривать все опросы с этим установленным флагом и копировать их.