我有两个表,Article
和Article_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