我正在关注这个相当不错的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
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,因此我觉得我应该有权查看任何数据。任何想法为什么我看不到任何东西?这与在沙盒模式下运行控制台有关吗?我以为它会将数据添加到数据库中,并在注销时回滚数据库。
感谢您的帮助:)
答案 0 :(得分:1)
当你在sanbox模式下运行时,你正在有效地运行database transaction,根据定义它是原子的并且是孤立的。这意味着在发生COMMIT或ROLLBACK之前,您无法查看事务的结果。
这就是为什么当你在沙盒中时,你无法在pgAdmin中同时看到结果。