gpt4 book ai didi

ruby-on-rails - 创建对范围具有唯一性的迁移

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

我想创建一个生成如下模型的迁移:

# Table name: cities
#
# country_code :text
# created_at :datetime not null
# id :integer not null, primary key
# name :string
# updated_at :datetime not null
#

class City < ActiveRecord::Base
validates :name, presence: true, uniqueness: {:scope => :country_code,
message: "A name and country already exists for this entry" }

end

如何创建 standalone migration创建这个模型?

我能够使整个表中的 :name 唯一:

rails g migration CreateCitites name:string:uniq country_code:text timezone:text

我在创建相对于 :country_code:name 唯一性时遇到问题。


例子:

name: Sydney, country_code: Australia

name: Sydney, country_code: Germany

应该允许

name: Sydney, country_code: Australia

name: Sydney, country_code: Australia

不应该被允许

最佳答案

在数据库中的两列之间强制执行唯一性的一种方法是在这些列上创建唯一索引。

您不能从命令行创建这种类型的迁移,但您可以在迁移文件生成后对其进行更改。

def up
create_table :cities do
# etc.
end

# Add your index declaration here, after "create_table"
add_index :cities, [:contry_code, :name], unique: true
end

关于ruby-on-rails - 创建对范围具有唯一性的迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32927262/

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