我正在嘗試使用Rails中的Active Record遷移將列添加到現有表中。我需要列的初始值基於表中的其他列。有沒有辦法在Active Record遷移中做到這一點?在基於其他列的初始值中添加Rails Active Record遷移中的列
爲了使它更具體,讓我們說我有以下幾點:
my_table
----------------
first_name: text
last_name: text
我想用concat(first_name, ' ', last_name'
初始值增加full_name
文本列。請注意,我不希望列上有一個默認值,因爲我打算讓應用程序向前填充(初始默認值只是爲現有記錄創建一個合理的起始值)。
如何在遷移中執行此操作?理想情況下,我想使用add_column
或類似的,但如果這不能工作,一個可行的替代方案將是可以接受的。
請注意,已經存在一個幾乎相同的問題(add a database column with Rails migration and populate it based on another column),但它的答案似乎沒有一個完全回答這個問題。
我的方法不行嗎? –
@DanilSperansky它的確如此,但是當模型在遷移過程中超過這一點時,它可能會受到問題的影響(在其他答案中指出),這就是爲什麼我將SQL解決方案發布到更新中的原因。因爲它不會嘗試實例化活動記錄對象,所以我可以想到的唯一一個角落案例就是如果在之後有一個遷移重命名或刪除表的話。 –