2013-02-27 39 views
0

在我的Rails應用程序中,我有一個屬性「標題」,我想更改數據庫中「標題」的所有實例,例如,「蘋果派」爲「蘋果蛋糕」。有沒有辦法做到這一點,而不是單獨修改每一個,因爲我有這麼多?在heroku數據庫中更改屬性值

回答

2

你可以做一個rake任務做的修改:

namespace :update do 

    desc "Update title" 
    task :title_fix => :environment do 
    MyClass.where(:title => 'old title').each do |t| 
     t.update_attributes(title: 'new title') 
    end 
    end 
end 

,然後在命令行中運行:

rake update:fix_title 

或者,如果你是勇敢的,你可以做到這一切在Rails控制檯,如:

MyClass.where(:title => 'old title').each { |t| t.update_attributes(title: 'new title') } 

但我討厭以非文件方式進行數據庫的變化...

+0

好的,會試試這個(我不是很勇敢)。這將更新它在我的heroku數據庫,而不僅僅是本地主機?命名空間耙是否在routes.rb中? – tessad 2013-02-27 02:19:32

+1

您會將rake文件添加到您的項目(lib/tasks/update.rb)中,然後使用'heroku run rake update:fix_title'遠程運行它。一定要先在測試環境中嘗試一下!切勿在沒有測試的情況下在生產中運行這樣的事情 – 2013-02-27 02:21:29

+0

好吧,它在我的本地主機(我不得不重新命名爲update.rake而不是update.rb)。我想我需要咬下子彈,並與heroku一起前往。有什麼可能出錯:)? – tessad 2013-02-27 02:46:43