Question à propos de la magie de Rails:Comment Rails affecte-t-il les colonnes d'enregistrement actives par défaut?
Je jouais avec IRB et le corrompu? méthode, alors je viens de faire ce qui suit:
>> User.first.attributes.collect { |column, value| [column, value.tainted?] }
=> [["phone", true], ["state", false], ["persistence_token", true], ["last_login_ip", true], ["country", true], ["login_count", false], ["last_request_at", false], ["id", false], ["forname", true], ["current_login_at", false], ["name", true]]
Est-ce que quelqu'un sait pourquoi certains des params sont entachées et certains ne sont pas? Et s'il y a un moyen de choisir quelle colonne devrait être corrompue?
EDIT:
Merci pour les réponses.
@sgtFloyd: J'ai juste essayé de mettre à jour manuellement le pays. et voici ce qui se passe:
>> u = User.first
>> u.country = "USA"
=> "USA"
>> u.country.tainted?
=> false
>> u.save
=> true
>> u.country.tainted?
=> false
>> u.reload
>> u.country.tainted?
=> true
>> u.country.class
=> String # it's also string in the database
EDIT 2:
j'ai enlevé tout à l'intérieur du modèle de l'utilisateur, et quelques colonnes de chaîne ne semblent pas entachées alors que certains ne ...
Merci une lot!
pourriez-vous ajouter la valeur elle-même? est-il faux quand il n'y a pas de valeur, vs vrai quand il y a une valeur? – DGM
Quel type de données est votre champ emailing? Tous les autres qui ont altéré? == faux sont numériques (y compris les dates) alors que les altérés sont des chaînes. Cela pourrait être quelque chose sur la façon dont ActiveRecord gère les données de chaîne, peut-être? –
Oui, vrai seulement la chaîne est corrompue, mais pas toutes (certaines de mes colonnes de chaîne ne sont pas corrompues)! C'est pourquoi c'est bizarre ... – jrichardlai