Lorsque j'utilise le attr_accessible code> pour spécifier quels champs de mon modèle je vais exposer, est-il vrai pour le script / la console aussi? Je veux dire quelque chose que je n'ai pas spécifié comme
attr_accestible code> ne sera pas accessible également à la console? P>
5 Réponses :
J'ai trouvé pourquoi:
Spécifie une liste blanche d'attributs de modèle pouvant être définis via une affectation de masse, tels que Nouveau (attributs) code>,
update_attributes (attributs) code) >, ou
attributs = (attributs) code>.
Ceci est l'opposé de la macro ATTR_PROTECTECTECTED: P>
Mass-assignment will only set attributes in this list, to assign to the rest of
attributes you can use direct writer methods. This is meant to protect sensitive
attributes from being overwritten by malicious users tampering with URLs or forms.
If youâd rather start from an all-open default and restrict attributes as needed,
have a look at `attr_protected`.
La console se comporte exactement comme votre application Rails. Si vous avez protégé des attributs pour un modèle spécifique, vous ne pourrez pas masser la masse Attribuer ces attributs de la console ou de l'application Rails elle-même. P>
Ceci n'est vrai que pour la mission de masse. Par exemple, si vous deviez définir inversement, vous pouvez définir tous les attributs que vous souhaitez comme accessibles à l'aide de Que ce qui suit fonctionnera toujours: p> Il s'agit du même comportement que dans les contrôleurs, les vues, etc. attr_protég: protégé code> dans votre modèle:
attr_accesible < /Code >.
attr_protéecté code> protège uniquement contre la masse d'affectation de variables, principalement des formes, etc. strong> p> p> p>
Lorsque vous spécifiez quelque chose à être par exemple: Supposons que vous ayez fabriqué et gauche attr_accesible code> Seules ces choses peuvent être consultées dans la console ou par interface de site Web.
nom code> et
e-mail code> pour être
attr_accesible code>: p>
créé_at code> et
mise à jour_at code > (que vous êtes censé).
Ensuite, vous ne pouvez modifier / mettre à jour ces champs de la console. P> p>
Si vous souhaitez exposer un champ Formulaire de champ Votre modèle, vous pouvez utiliser
def meth=(args) ... end def meth ... end