gpt4 book ai didi

ruby-on-rails - 如何显式插入主键值?

转载 作者:行者123 更新时间:2023-12-04 05:42:56 24 4
gpt4 key购买 nike

我有一个名为 messages 的表,这是表结构,我不希望 id 是自动递增字段,但它应该是该表的主键.

这是消息

的表结构
CREATE TABLE `messages` (
`id` INT(11) NOT NULL,
`user_id` INT(11) NOT NULL,
`text` VARCHAR(255) NOT NULL,
`source` VARCHAR(100),
`created_at` DATETIME DEFAULT NULL,
`updated_at` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`)
);

将数据插入我正在使用的哈希对象下方的表中

msg['id'] = 12345; 
msg['user_id'] = 1;
msg['text'] = 'Hello world';

如果我将这个散列保存到消息表中,则不会插入 id

message = Message.new(msg);
message.save!

Rails 正在构建不带 id 的插入 sql,因此 id 值不会插入消息表。

如何在表中插入 id 值,这是不使用 id 字段的插入 sql rails 构建

INSERT INTO `users` (`updated_at`, `user_id `, `text`, `created_at`) VALUES('2010-06-18 12:01:05', '1', 'Hello world', '2010-06-18 12:01:05');

最佳答案

设置 ID 值在从遗留数据迁移时通常很有用,或者 - 正如我现在正在做的那样 - 合并两个应用程序同时保持 FK 完整性。

我挠了挠头,看来你必须在 调用保存 之前设置 PK 值。保存记录后,ActiveRecord 会忽略 #id= 或 update_attribute 。因此,在从我使用的属性哈希设置记录时:

article = Article.new(attrs)
article.id = attrs["id"]
article.save!

关于ruby-on-rails - 如何显式插入主键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3099589/

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