0

我有两个表,'Article'和'Article_metadata'。我在这两个表之间添加了引用和外键。但rails会如何将article_id(文章表的id列)作为外键。但是我希望文章表(Article_uuid)中的另一列作为我的外键。我该怎么做 ?在rails迁移中添加特定列作为外键

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

'add_reference:article_metadata,:文章,foreign_key:真正的'

回答

2

在你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 
+0

Hw的我可以检索文章的元数据为特定的文章?我可以做Article.Article_metadata吗? – Lollypop

+0

而新创建的外键列默认为整数数据类型,我如何设置数据类型为字符串或varchar? – Lollypop

+0

我做了一个编辑,向您展示如何从文章中查找元数据。不知道你的模型名称实际上是什么,你可能需要调整一下,但其余的都很好。 –