0
在我的Rails应用程序中,我有一个属性“标题”,我想更改数据库中“标题”的所有实例,例如,“苹果派”为“苹果蛋糕”。有没有办法做到这一点,而不是单独修改每一个,因为我有这么多?在heroku数据库中更改属性值
在我的Rails应用程序中,我有一个属性“标题”,我想更改数据库中“标题”的所有实例,例如,“苹果派”为“苹果蛋糕”。有没有办法做到这一点,而不是单独修改每一个,因为我有这么多?在heroku数据库中更改属性值
你可以做一个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') }
但我讨厌以非文件方式进行数据库的变化...
好的,会试试这个(我不是很勇敢)。这将更新它在我的heroku数据库,而不仅仅是本地主机?命名空间耙是否在routes.rb中? – tessad 2013-02-27 02:19:32
您会将rake文件添加到您的项目(lib/tasks/update.rb)中,然后使用'heroku run rake update:fix_title'远程运行它。一定要先在测试环境中尝试一下!切勿在没有测试的情况下在生产中运行这样的事情 – 2013-02-27 02:21:29
好吧,它在我的本地主机(我不得不重新命名为update.rake而不是update.rb)。我想我需要咬下子弹,并与heroku一起前往。有什么可能出错:)? – tessad 2013-02-27 02:46:43