在rails迁移中将特定列添加为外键

时间:2016-02-11 20:56:22

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord rails-migrations

我有两个表,ArticleArticle_metadata

我在这两个表之间添加了引用和外键。但是rails会将article_id(Article表的id列)作为外键。

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

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

add_reference :article_metadata, :article, foreign_key: true

1 个答案:

答案 0 :(得分:3)

在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