我刚从 IPB 导入第一个用户到我的本地 Discourse 2.0.0.beta2,并接着使用 @michaeld 的 discourse-migratepassword 导入了之前的密码。
一切看起来都运行正常,用户已存在于数据库中,我也验证了 discourse-migratepassword 中的密码检查已成功。
但问题出在设置原始密码后无法保存用户。User.save 返回 false,导致 confirm_password? 失败,并在日志中产生以下输出:
I, [2018-02-01T14:31:42.198999 #58525] INFO -- : Started POST "/session" for ::1 at 2018-02-01 14:31:42 +0100
I, [2018-02-01T14:31:42.303772 #58525] INFO -- : Processing by SessionController#create as */*
I, [2018-02-01T14:31:42.305979 #58525] INFO -- : Parameters: {"login"=>"Florian", "password"=>"[FILTERED]"}
D, [2018-02-01T14:31:42.314922 #58525] DEBUG -- : User Load (2.3ms) SELECT "users".* FROM "users" WHERE "users"."username_lower" = 'florian' LIMIT 1
D, [2018-02-01T14:31:42.379916 #58525] DEBUG -- : (1.0ms) SELECT "user_custom_fields"."name", "user_custom_fields"."value" FROM "user_custom_fields" WHERE "user_custom_fields"."user_id" = 1 ORDER BY id asc
D, [2018-02-01T14:31:42.383404 #58525] DEBUG -- : (0.6ms) BEGIN
D, [2018-02-01T14:31:42.400523 #58525] DEBUG -- : UserEmail Load (2.0ms) SELECT "user_emails".* FROM "user_emails" WHERE "user_emails"."user_id" = 1 AND "user_emails"."primary" = 't' LIMIT 1
D, [2018-02-01T14:31:42.427949 #58525] DEBUG -- : UserEmail Exists (2.8ms) SELECT 1 AS one FROM "user_emails" WHERE "user_emails"."email" = 'address@domain.invalid' AND ("user_emails"."id" != 1) LIMIT 1
D, [2018-02-01T14:31:42.433311 #58525] DEBUG -- : UserEmail Exists (1.5ms) SELECT 1 AS one FROM "user_emails" WHERE "user_emails"."primary" = 't' AND ("user_emails"."id" != 1) AND "user_emails"."user_id" = 1 LIMIT 1
D, [2018-02-01T14:31:42.437460 #58525] DEBUG -- : (1.1ms) ROLLBACK
I, [2018-02-01T14:31:42.442319 #58525] INFO -- : Completed 200 OK in 134ms (Views: 0.2ms | ActiveRecord: 25.3ms)
这是我第一次接触 Ruby 和 Rails/ActiveRecord。如果有人能帮我理解我的描述,那就太好了 ![]()
谢谢!
—Florian