2013-02-27 38 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