gpt4 book ai didi

ruby-on-rails - 是否可以在 Rails 2.3.8 迁移中创建带有键的表?

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

我知道我可以创建一个表,然后在 Rails 2.3.8 迁移中添加一个索引,例如

class CreateFoos < ActiveRecord::Migration
def self.up
create_table :foos do |t|
t.timestamps
t.string :bar
end
add_index :foos, :bar
end
end

我可以创建一个表并在 CREATE TABLE 子句中指定一个键吗?上面的迁移生成如下 SQL:

CREATE TABLE `foos` (
`id` int(11) NOT NULL auto_increment,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
`bar` varchar(255) default NULL,
PRIMARY KEY (`id`)
);
ALTER TABLE foos ADD INDEX `index_bar` (`bar`);

但我想要的是:

CREATE TABLE `foos` (
`id` int(11) NOT NULL auto_increment,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
`bar` varchar(255) default NULL,
PRIMARY KEY (`id`),
KEY `index_bar` (`bar`)
)

我知道这可以用 #execute 来完成,但是使用 Rails-y block 会好得多。这可以在标准 Rails 2.3.8 中完成吗?使用插件?

最佳答案

您可以在采用原始 SQL 的 Rails 迁移中运行“执行”命令。您的迁移可能看起来像这样:

class CreateFoos < ActiveRecord::Migration
def self.up
sql = <<-SQL # This is a "here document"
CREATE TABLE `foos` (
`id` int(11) NOT NULL auto_increment,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
`bar` varchar(255) default NULL,
PRIMARY KEY (`id`),
KEY `index_bar` (`bar`)
)
SQL

execute sql
end

def self.down
drop_table :foos
end
end

关于ruby-on-rails - 是否可以在 Rails 2.3.8 迁移中创建带有键的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431997/

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