Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么不是';在这个简单的活动记录示例中保存的id是什么?_Ruby_Ruby On Rails 3_Rails Activerecord - Fatal编程技术网

Ruby 为什么不是';在这个简单的活动记录示例中保存的id是什么?

Ruby 为什么不是';在这个简单的活动记录示例中保存的id是什么?,ruby,ruby-on-rails-3,rails-activerecord,Ruby,Ruby On Rails 3,Rails Activerecord,这是一个关于RubyonRails和ActiveRecord的新手问题。我创建了一个rails应用程序、一个sqlite表和一个名为Thing的模型类来映射到表。然后我运行rails控制台,如下所示。为什么未正确保存id字段 irb(main):005:0> Thing.all Thing Load (0.2ms) SELECT "things".* FROM "things" => [] irb(main):006:0> t = Thing.new :name =>

这是一个关于RubyonRails和ActiveRecord的新手问题。我创建了一个rails应用程序、一个sqlite表和一个名为
Thing
的模型类来映射到表。然后我运行rails控制台,如下所示。为什么未正确保存
id
字段

irb(main):005:0> Thing.all
  Thing Load (0.2ms)  SELECT "things".* FROM "things"
=> []
irb(main):006:0> t = Thing.new :name => 'test'
=> #<Thing id: nil, name: "test", somedate: nil>
irb(main):007:0> t.id
=> nil
irb(main):009:0> t.save
   (0.2ms)  begin transaction
  SQL (3.4ms)  INSERT INTO "things" ("name", "somedate") VALUES (?, ?)  [["name", "test"], ["somedate", nil]]
   (0.8ms)  commit transaction
=> true
irb(main):010:0> Thing.all
  Thing Load (0.2ms)  SELECT "things".* FROM "things"
=> [#<Thing id: nil, name: "test", somedate: nil>]
irb(main):011:0> t.id
=> 1
模型:

class Thing < ActiveRecord::Base
  attr_accessible :name
end
class Thing
这有点让人困惑。但我想你的模式是有问题的。您是否在迁移文件中明确定义了
id
字段

我这么说是因为,主字段也应该是自动递增的。以确保我刚刚签入了我的计算机。对于表,我的模式类似于:

CREATE TABLE "albums" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer,......

在这里你可以看到你的一个不同

这有点让人困惑。但我想你的模式是有问题的。您是否在迁移文件中明确定义了
id
字段

我这么说是因为,主字段也应该是自动递增的。以确保我刚刚签入了我的计算机。对于表,我的模式类似于:

CREATE TABLE "albums" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer,......

在这里你可以看到你的一个不同

我想您会发现,如果运行
rakedb:migrate
,它将使用自动递增的id列创建things表。这会像你期望的那样。我不建议您手工创建表格

我想您会发现,如果运行
rakedb:migrate
,它将使用自动递增的id列创建things表。这会像你期望的那样。我不建议您手工创建表格

啊,就是这样。谢谢我已经手动创建了表。它可能会抛出一个关于ID列定义的错误。啊,就是这样。谢谢我已经手动创建了表。它可能会抛出一个关于ID列定义的错误。