2010-05-09 11 views
2

J'essaye de construire un CMS en utilisant ERB. Est-il possible de donner un code ERB en lecture seule à vos modèles? Par exemple, je veux pouvoir charger n'importe quelle information sur mes modèles (Model.all, Model.find_by_slug, Model.find_by_name, Model.other_model.name, etc ...), mais je ne veux pas pouvoir changer ces données. Pouvez-vous désactiver ERB d'exécuter des commandes qui feraient des changements de base de données (Model.save, Model.update, Model.delete, Model.destroy, etc.) ???Restreindre l'accès dans le code ERB

+0

Probablement pas. Une solution souvent utilisée pour cela est d'utiliser un langage de template dédié comme ** liquide **. –

+0

Pourquoi essayez-vous de faire cela? Il pourrait y avoir une meilleure façon d'accomplir votre objectif. – concept47

+0

J'ai essayé du liquide et je pensais que ça allait marcher pour moi, mais je ne pouvais pas comprendre comment passer des arguments à mes méthodes liquides. – LGFaler

Répondre

0

Il ya safemode par Rails core développeur Sven Fuchs pour vous rendre erb, eh bien, plus sûr.

Un modèle de moteur comme le liquide (qui est douloureux à mes yeux) ou mustache pourrait être plus facile à apprendre et à appliquer pour vos utilisateurs que erb.

0

Essayez d'utiliser: flag readonly tandis que les modèles de recherche:

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

Si vous allez essayer de le sauver - jetteront exception ReadOnlyRecord. Mais je suggère également Liquid comme un modèle, puisque l'utilisateur n'a pas un accès restreint aux variables d'application à l'intérieur des modèles ERB.