gpt4 book ai didi

ruby-on-rails - Rails 生成迁移未设置 :null => false to created_at and update_at

转载 作者:行者123 更新时间:2023-12-04 06:04:52 25 4
gpt4 key购买 nike

我创建了一个全新的 Rails 应用程序,生成了一些脚手架和一些模型。经过几次测试后,我意识到 t.timestamps 生成的列不包括“传统” :null => false 选项。我需要这种行为,我看不出这是做什么的。

我重新创建了一个新应用程序,认为这是一个新的 rails 4 功能,但我无法获得保存行为。在这个应用程序中,timespamp 可以正常工作。

当我创建帖子时,在 Rails 控制台的“窃听应用程序”中,我们可以看到:

Loading development environment (Rails 4.0.1)

2.0.0-p247 :001 > Post.create(title:"test")

(0.1ms) begin transaction SQL (8.6ms) INSERT INTO "posts" ("created_at", "title", "updated_at") VALUES (?, ?, ?) [["created_at", Wed, 27 Nov 2013 21:19:01 EST -05:00], ["title", "test"], ["updated_at", Wed, 27 Nov 2013 21:19:01 EST -05:00]]
(0.8ms) commit transaction
=> #<Post id: 1, title: "test", content: nil, excerpt: nil, dashboard: nil, created_at: "2013-11-28 02:19:01", updated_at: "2013-11-28 02:19:01">

2.0.0-p247 :002 > Post.last

Post Load (0.4ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" DESC LIMIT 1
=> #<Post id: 1, title: "test", content: nil, excerpt: nil, dashboard: nil, created_at: nil, updated_at: nil>

时间戳已设置但未保存在数据库中。

我想我错过了一些东西。知道如何恢复默认行为吗?

编辑:迁移文件
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :title
t.text :content
t.text :excerpt
t.boolean :dashboard

t.timestamps
end
end
end

最佳答案

最后我发现了错误:

经过几次尝试,我检查了配置目录中的所有内容。我看到的时间戳的唯一可能性是时区配置。

在评论这个(config/application.rb)之后:

#config.active_record.default_timezone = 'Eastern Time (US & Canada)'

一切恢复正常!没有更多 :null => false,但时间戳能够记录在数据库中。

关于ruby-on-rails - Rails 生成迁移未设置 :null => false to created_at and update_at,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20256989/

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