Обычно переполнение стека не для исследований, а для решения проблем. Тем не менее ...
- Нет, ваши редактируемые активы не обязательно должны быть в базе данных, чтобы это работало.
- Но вы хотите, чтобы они были в любом случае; предоставление доступа на запись к файлам в вашем приложении - не лучший подход.
- Цепочка рендеринга Rails 3 позволяет вам использовать собственный парсер представлений и добавить путь к встроенному поиску представлений, который вы можете сравнительно легко обмануть при загрузке из базы данных.
- Если ваши конечные пользователи напишут что-то вроде жидких шаблонов, это сэкономит вам много работы и позволит сделать это сравнительно легко. У них не будет доступа к небезопасным методам Ruby, и вам не придется проходить всю работу по их песочнице в Ruby.
- CSS имеет меньше последствий для безопасности, поэтому вы можете довольно легко сохранить необработанный CSS в базе данных и позволить своим пользователям редактировать его по своему вкусу, а затем подавать его с запросом к таблице стилей /: user_id / style.css request ( с некоторым тяжелым кэшированием, как с Varnish, чтобы уберечь ваше приложение от убийства).
Надеюсь, это поможет вам начать в правильном направлении. Если вы решите подключиться к стеку рендеринга в Rails, я настоятельно рекомендую вам взять копию Crafting Rails Applications - одно из нескольких примеров приложений, через которые он вас проводит, делает это на достаточно детальном уровне.