我有两个表,Article
和Article_metadata
。
我在这两个表之间添加了引用和外键。但是rails会将article_id
(Article表的id列)作为外键。
但我希望Article表(Article_uuid
)中的另一列作为我的外键。我该怎么做 ?
这就是我现在正在做的事情。在创建Article_metadata
迁移文件中:
add_reference :article_metadata, :article, foreign_key: true
答案 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