将数据添加到rails 4.0控制台中的postgres,在pgAdmin中不可见

时间:2013-11-29 16:19:44

标签: ruby-on-rails postgresql pgadmin

我正在关注这个相当不错的rails tutorial作为轨道上红宝石世界的介绍。

我已经将我的示例应用程序配置为使用postgresql与其分发的Heroku站点一致。我可以使用rails generate model user name:string email:string生成迁移文件,然后运行bundle rake bd:migrate,在数据库中创建表。

执行此操作后,我可以使用pgAdmin3查看表格。然后,我以沙箱模式运行rails控制台,并使用活动记录方法创建一些用户对象。

user = User.new(name: "Russell Ormes", email: "russell@ormes.com")
=> #<User id: nil, name: "Russell Ormes", email: "russell@ormes.com", created_at: nil, updated_at: nil>
irb(main):003:0> user.save
   (0.3ms)  SAVEPOINT active_record_1
  SQL (93.6ms)  INSERT INTO "users" ("created_at", "email", "name", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"  [["created_at", Fri, 29 Nov 2013 15:08:30 UTC +00:00], ["email", "russell@ormes.com"], ["name", "Russell Ormes"], ["updated_at", Fri, 29 Nov 2013 15:08:30 UTC +00:00]]
   (0.2ms)  RELEASE SAVEPOINT active_record_1
=> true

和第二个用户

irb(main):005:0> User.create(name: "A Nother", email: "another@example.org")
   (0.3ms)  SAVEPOINT active_record_1
  SQL (0.7ms)  INSERT INTO "users" ("created_at", "email", "name", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"  [["created_at", Fri, 29 Nov 2013 15:15:23 UTC +00:00], ["email", "another@example.org"], ["name", "A Nother"], ["updated_at", Fri, 29 Nov 2013 15:15:23 UTC +00:00]]
   (0.2ms)  RELEASE SAVEPOINT active_record_1
=> #<User id: 2, name: "A Nother", email: "another@example.org", created_at: "2013-11-29 15:15:23", updated_at: "2013-11-29 15:15:23">

现在,我可以使用User.all

从rails控制台访问这些用户
irb(main):010:0> User.all
  User Load (0.6ms)  SELECT "users".* FROM "users"
=> #<ActiveRecord::Relation [#<User id: 1, name: "Russell Ormes", email: "russell@ormes.com", created_at: "2013-11-29 15:08:30", updated_at: "2013-11-29 15:08:30">, #<User id: 2, name: "A Nother", email: "another@example.org", created_at: "2013-11-29 15:15:23", updated_at: "2013-11-29 15:15:23">]>

但是,当我通过pgAdmin3访问数据库时,它显示没有数据。 (作为新成员,我没有足够的声望点来发布图像)。

我使用与rails(示例)相同的用户名登录pgAdmin3,因此我觉得我应该有权查看任何数据。任何想法为什么我看不到任何东西?这与在沙盒模式下运行控制台有关吗?我以为它会将数据添加到数据库中,并在注销时回滚数据库。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

当你在sanbox模式下运行时,你正在有效地运行database transaction,根据定义它是原子的并且是孤立的。这意味着在发生COMMIT或ROLLBACK之前,您无法查看事务的结果。

这就是为什么当你在沙盒中时,你无法在pgAdmin中同时看到结果。