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

我做了一個編輯,向您展示如何從文章中查找元數據。不知道你的模型名稱實際上是什麼,你可能需要調整一下,但其餘的都很好。 –