10
votes

attr_accessible dans les rails actif enregistrement

Lorsque j'utilise le attr_accessible 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 ne sera pas accessible également à la console?


0 commentaires

5 Réponses :


7
votes

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`.


0 commentaires

7
votes

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.


0 commentaires

19
votes

Ceci n'est vrai que pour la mission de masse. Par exemple, si vous deviez définir attr_protég: protégé dans votre modèle: xxx

inversement, vous pouvez définir tous les attributs que vous souhaitez comme accessibles à l'aide de attr_accesible < /Code >.

Que ce qui suit fonctionnera toujours: xxx

Il s'agit du même comportement que dans les contrôleurs, les vues, etc. attr_protéecté protège uniquement contre la masse d'affectation de variables, principalement des formes, etc.


0 commentaires

1
votes

Lorsque vous spécifiez quelque chose à être attr_accesible Seules ces choses peuvent être consultées dans la console ou par interface de site Web.

par exemple: Supposons que vous ayez fabriqué nom et e-mail pour être attr_accesible : xxx

et gauche créé_at et mise à jour_at (que vous êtes censé). Ensuite, vous ne pouvez modifier / mettre à jour ces champs de la console.


0 commentaires

0
votes

Si vous souhaitez exposer un champ Formulaire de champ Votre modèle, vous pouvez utiliser

def meth=(args)
 ...
end
def meth
 ...
end


0 commentaires