Lorsque j'utilise le attr_accessible
pour spécifier les champs de mon modèle que je vais exposer, est-ce vrai aussi pour script/console? Je veux dire quelque chose que je n'ai pas spécifié comme attr_accessible
ne sera pas accessible aussi bien à travers la console?attr_accessible in rails Enregistrement actif
Répondre
Ceci n'est vrai que pour l'attribution de masse. Par exemple, si vous deviez mettre attr_protected :protected
dans votre modèle:
>> Person.new(:protected => "test")
=> #<Person protected: nil>
A l'inverse, vous pouvez définir tous les attributs que vous voulez aussi accessibles à l'aide attr_accessible
.
Cependant, ce qui suit fonctionne toujours:
>> person = Person.new
=> #<Person protected: nil>
>> person.protected = "test"
=> #<Person protected: "test">
Ce comportement est le même que dans les contrôleurs, vues, etc. attr_protected
ne protège contre l'affectation de masse des variables, principalement des formes, etc.
J'ai trouvé pourquoi:
Spécifie une liste blanche des attributs de modèle qui peuvent être définies par affectation de masse, comme new(attributes)
, update_attributes(attributes)
ou attributes=(attributes)
. Ce est à l'opposé de la macro attr_protected:
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`.
Donc cela signifie que juste éviter affectation de masse, mais je peux encore définir une valeur.
La console se comporte exactement comme votre application Rails. Si vous avez protégé certains attributs pour un modèle spécifique, vous ne pourrez pas affecter ces attributs à la console ou à l'application Rails elle-même.
Lorsque vous spécifiez que quelque chose doit être attr_accessible
, seules ces choses peuvent être accédées dans la console ou par l'interface du site Web.
par exemple: Supposons que vous avez fait name
et email
être attr_accessible
:
attr_accessible :name, :email
et à gauche sur created_at
et updated_at
(que vous êtes censé). Ensuite, vous ne pouvez modifier/mettre à jour ces champs dans la console.
Si vous souhaitez exposer un champ sous forme de votre modèle, vous pouvez utiliser
attr_accessor :meth # for getter and setters
attr_writer :meth # for setters
attr_reader :meth # for getters
ou si vous voulez ajouter un comportement à votre attribut, vous aurez à utiliser des attributs virtuels
def meth=(args)
...
end
def meth
...
end
à votre santé.
- 1. bypass attr_accessible/protected in rails
- 2. rails enregistrement actif - Recherche avancée
- 3. Données temporelles avec Rails/Enregistrement actif
- 4. Rails Enregistrement actif aléatoire avec pagination
- 5. Enregistrement actif Recherche par colonne Rails 'OU'
- 6. Rails problème avec Delayed_Job et enregistrement actif
- 7. Rails 3 - Comprendre attr_accessible avec paper_clip
- 8. comment exiger un enregistrement actif en dehors des rails
- 9. Rails Enregistrement actif Mysql find query Clause HAVING
- 10. Problème Mysql GROUP_BY (enregistrement actif)
- 11. Qu'est-ce qu'un enregistrement actif?
- 12. CodeIgniter enregistrement actif et MySQL
- 13. Rails 3. Enregistrement actif. Enregistrement. Afficher les blocs de transaction SQL
- 14. Limiter les résultats d'un enregistrement actif find
- 15. enregistrement actif: créer un enregistrement à partir de l'objet parent
- 16. mongoid, set_table_name & attr_accessible
- 17. Enregistrement actif/Architecture à trois niveaux
- 18. Codeigniter actif enregistrement sélectionnez, jointure gauche, compte
- 19. mysql codeigniter enregistrement actif m: m suppression
- 20. Enregistrement actif rejoint plus de 3 tables
- 21. Codeigniter Enregistrement actif: supérieur à l'instruction
- 22. Enregistrement actif: Obtenez deux objets aléatoires?
- 23. Codeigniter enregistrement actif avec plusieurs comme ou?
- 24. Comment comparer une requête d'enregistrement active null in rails
- 25. Enregistrement actif to_json \ as_json sur la matrice de modèles
- 26. Enregistrement de la méthode d'enregistrement de l'enregistrement actif dans Rails 3 - comment
- 27. has_and_belongs_to_many in Rails
- 28. Mootools in Rails
- 29. Lifestream in Rails
- 30. form_remote_for in rails