在轨道迁移中添加特定列作为外键



我有两个表,ArticleArticle_metadata

我在这两个表之间添加了引用和外键。但是 rails 会以某种方式将article_id(文章表的 id 列)作为外键。

但是我希望文章表(Article_uuid)中的另一列作为我的外键。我该怎么做?

这就是我现在的做法。在创建Article_metadata迁移文件中:

add_reference :article_metadata, :article, foreign_key: true

在 ArticleMetaData 类中,将自定义外键添加到 belongs_to 声明中。下面是一个示例:

class ArticleMetaData < ActiveRecord::Base
  table_name "Article_metadata"
  belongs_to :article, foreign_key: "article_uuid"
end

add_reference实际上创建了一个新的列和索引,但听起来您的列已经存在,因此您不需要新的列。

要引用文章中的元数据,请修改文章模型以引用相同的foreign_key字段:

class Article < ActiveRecord::Base
  # Tell ActiveRecord which column is the primary key (id by default)
  self.primary_key = 'uuid'
  # Tell the relationship which field on the meta_data table to use to match this table's primary key
  has_one :meta_data, foreign_key: "article_uuid", class_name: "ArticleMetaData"
end

相关内容

  • 没有找到相关文章

最新更新