2010-05-09 7 views
2

Я пытаюсь создать CMS с использованием ERB. Есть ли способ предоставить код ERB для чтения только для чтения вашим моделям? Например, я хочу иметь возможность загружать любую информацию о моих моделях (Model.all, Model.find_by_slug, Model.find_by_name, Model.other_model.name и т. Д.), Но я не хочу иметь возможность измените эти данные. Можете ли вы отключить ERB от выполнения команд, которые будут делать изменения базы данных (Model.save, Model.update, Model.delete, Model.destroy и т. Д.) ???Ограничение доступа в код ERB

+0

Возможно, нет. Часто используемым решением для этого является использование специального языка шаблонов, например ** liquid **. –

+0

Почему вы пытаетесь это сделать? Может быть, лучший способ достичь вашей цели. – concept47

+0

Я пробовал жидкость и думал, что это сработает для меня, но я не мог понять, как передать аргументы моим методам liquid_methods. – LGFaler

ответ

0

Существует safemode от Rails core developer Sven Fuchs, чтобы сделать вас erb, ну, безопаснее.

Шаблонный двигатель, подобный жидкости (что является болезненным на моих глазах) или mustache, может быть проще узнать и применить для своих пользователей, чем erb.

0

Попробуйте использовать: только для чтения флага во время нахождения модели:

@posts = Post.find(:all, :readonly => true) 

В случае, если вы будете пытаться сохранить его - выбросит ReadOnlyRecord исключение. Но я также предлагаю Liquid как templater, поскольку пользователь не имеет ограниченного доступа к видам приложений внутри шаблонов ERB.

Смежные вопросы