2016-09-14 61 views
1

我有一個與模型興趣具有一對一關係的模型配置文件。在創建新的配置文件的,我有Ruby on Rails:是否有一種方法來實例化已有數據而不是創建時的關係?

Interest.find_or_create_by(profile_id: @prof.id) 

不過,我最近纔在我的項目定義這種關係,而這樣,檔案的舊的情況下,不通過這個find_or_create_by線運行。有沒有辦法在我的整個數據庫中運行這個命令(通過shell或其他),這樣我可以保證Profile的每個實例都與一個Interest的實例綁定在一起?

+0

創建遷移和只寫擦y代碼,這樣做...? –

+0

命令是什麼? –

+0

@LeTran:你如何知道以前的'個人資料'他們哪些屬於哪個'興趣'模型記錄? –

回答

1

生成遷移,並在其中包含以下內容:

Profile.find_each do |profile| 
    unless profile.interest.present? 
    interest = profile.create_interest 
    end 
end 

如果您有大量的數據庫,然後我會建議去耙的任務,因爲這種遷移會增加部署的時候,你會部署這個生產

+0

非常感謝!這正是我正在尋找的。我將來肯定會參考這個。 –

0

如果你有一個利息實例(在我的例子ID = 1),你可以將所有的配置文件,然後運行控制檯和:

Profile.all.each do |profile| 
    if profile.interest_id.nil? 
    profile.interest_id = 1 
    profile.save 
    end 
end 
+0

這會將所有其餘配置文件綁定到相同的興趣實例。我需要它是唯一的興趣實例 –

+0

如果沒有特定的順序,你可以申請,那麼你必須一個接一個地完成。 –

相關問題