用户在创建时存在,但它实际上不在数据库中

时间:2014-05-19 20:08:01

标签: ruby-on-rails ruby macos postgresql activerecord

我的当前应用程序的数据库设置存在一个奇怪的问题。

由于迁移过程没有问题,但是当我尝试使用某些测试数据对数据库进行种子处理时,它表示数据存在并回滚事务。

当我查询数据库以检查记录是否存在时,它返回nil。

此时我已经迷失在我应该寻找罪魁祸首的地方。

感谢任何帮助。

seeds.rb:

User.create(first_name: 'John', last_name: 'Doe', email: 'john@doe.com', password: 'testing', is_admin: true)

rake db:种子输出:

  ActiveRecord::SchemaMigration Load (0.5ms)  SELECT "schema_migrations".* FROM "schema_migrations"
   (0.2ms)  BEGIN
  User Exists (1.0ms)  SELECT  1 AS one FROM "users"  WHERE "users"."email" = 'john@doe.com' LIMIT 1
   (0.2ms)  ROLLBACK

User.all:

  User Load (1.0ms)  SELECT "users".* FROM "users"
  User Load (1.0ms)  SELECT "users".* FROM "users"
=> []

2 个答案:

答案 0 :(得分:1)

由于某些验证错误,用户创建似乎失败,即User模型上的任何验证都禁止创建用户记录。

您可以做的是,使用以下内容更新seeds.rb

User.create!(first_name: 'John', last_name: 'Doe', email: 'john@doe.com', password: 'testing', is_admin: true) 

注意 create!而不是create

通过这种方式,您可以了解用户创建失败的验证。

答案 1 :(得分:0)

使用User.create!或像这样的代码

user = User.create(first_name: 'John', last_name: 'Doe', email: 'john@doe.com', password: 'testing', is_admin: true)

然后运行user.save