Voici la sortie dans la console rails:Rails 3.2.8 Enregistrement `save » méthode d'exécution sans erreur, mais n'a pas changé la base de données
Loading development environment (Rails 3.2.8)
irb(main):001:0> u=User.first
User Load (0.2ms) SELECT "users".* FROM "users" LIMIT 1
=> #<User id: 1, name: "scorpio_et", passwd: "xxx", updated_at: "2013-01-07 12:09:26",expire_time: "2000-01-01 12:09:15">
irb(main):002:0> u.expire_time=Time.now
=> 2013-01-07 20:16:39 +0800
alors j'execute u.save, de la sortie, il semble travaillé
irb(main):003:0> u.save
(0.1ms) begin transaction
(0.5ms) UPDATE "users" SET "expire_time" = '2013-01-07 12:16:39.628766', "updated_at" = '2013-01-07 12:16:42.816250' WHERE "users"."id" = 1
(85.9ms) commit transaction
=> true
Mais quand je rapportez de la base de données, le champ `expire_time » n'a pas changé
irb(main):004:0> User.first
User Load (0.4ms) SELECT "users".* FROM "users" LIMIT 1
=> #<User id: 1, name: "scorpio_et", passwd: "xxx", updated_at: "2013-01-07 12:16:42", expire_time: "2000-01-01 12:16:39">
lorsque j'utilise save!' ,it didn't throw exception,and the output is identical with the
enregistrer '.Mais je peux mettre à jour un autre champ. Voici le schema.rb: ActiveRecord :: Schema.define (: version => 20130107073652) faire
create_table "users", :force => true do |t|
t.string "name"
t.string "passwd"
t.string "jsoncookie"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.time "expire_time"
end
Je remarque le temps expire_time' field is
', mais je pense qu'il devrait être DATETIME
ma migration: AddExpireTimeToUsers classe < ActiveRecord :: migration changer DEF add_column: utilisateurs,: expire_time,: DataTime fin fin
Avez-vous une exception si vous appelez 'u.save!'? Si oui, pouvez-vous s'il vous plaît ajouter cette information d'erreur à votre question. –
Utilisez-vous la commande 'rails console' pour charger l'environnement des rails? Si oui, existe-t-il une contrainte dans votre modèle d'utilisateur pour le champ 'expire_time' qui limite l'accès à la mise à jour. Essayez également de mettre à jour tout autre champ pour vérifier s'il est mis à jour. –