gpt4 book ai didi

ruby-on-rails - 在 Rails 迁移中添加对非整数列的引用

转载 作者:行者123 更新时间:2023-12-04 03:38:41 28 4
gpt4 key购买 nike

我今天研究了几个关于这个主题的问题。我知道,我可以使用 t.references在迁移中添加引用。但是,如果表具有非整数主键,我如何添加对该列的引用?

我有一张有这个定义的表

    create_table :sessions, id: false do |t|
t.string :session, primary_key: true, limit: 10

t.timestamps null: false
end

如何添加对 session 的引用列(名称在这里无关紧要),它是来自另一个表迁移的字符串。我用 t.references 测试过但这只是添加一个整数列。我知道我可以使用 add column .但是如何在没有 create_table 的情况下做到这一点直接方法?

澄清重复标志
此问题被标记为重复 this question ,但实际上并非如此。因为我不是在询问使用非默认非整数主键设置表,因为我已经设置了该表。我问的是从另一个表中引用这种类型的表。

最佳答案

您需要使用字符串类型,而不是使用引用帮助器,并添加索引以加快查找速度。如果您的其他模型是“记录”:

rails generate migration AddSessionIdToRecords session:string:index

这应该会产生这样的迁移:
def change
add_column :records, :session_id, :string
add_index :records, :session_id
end

由于您使用的是非常规命名,因此您需要指定模型中的主键和关系定义:
class Session < ActiveRecord::Base
self.primary_key = "session"

has_many :records, primary_key: "session"
end

class Record < ActiveRecord::Base
belongs_to :session, primary_key: "session"
end

关于ruby-on-rails - 在 Rails 迁移中添加对非整数列的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168171/

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