gpt4 book ai didi

ruby - 为什么在这个简单的 Active Record 示例中没有保存 id?

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:11 26 4
gpt4 key购买 nike

这是一个关于 Ruby on Rails 和 Active Record 的新手问题。我创建了一个 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

在sqlite中;

sqlite> .schema things
CREATE TABLE things (id int primary key, name text, somedate date);

模型:

class Thing < ActiveRecord::Base
attr_accessible :name
end

最佳答案

这有点令人困惑。但我猜你的架构有问题。您是否在迁移文件中明确定义了 id 字段?

我这么说是因为主字段也应该自动递增。为了确保我刚刚检查了我的电脑。对于一个表,我的模式是这样的:

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

在这里您可以看到与您的不同之处。

关于ruby - 为什么在这个简单的 Active Record 示例中没有保存 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15533280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com