2011-06-17 32 views
0

我有一个链接的数据库,指向一个特定的网站,但该网站上的不同页面。那么网站的域名已更改,我需要更新我的数据库以反映这一变化。我只需要更改域名,其余链接工作正常。我可以使用导轨迁移编辑数据库中的字段吗?

我的问题是,我可以使用rails迁移来做到这一点吗?编辑列中的所有字段并更新它们?这看起来像什么?

我知道还有其他的方法来处理它,但我想探索一下我在轨道移植中的选择。

在此先感谢!

回答

1

当然,你有两个选择。 1)你可以写在迁移ActiveRecord的代码就像你在一个模型中,例如:

class ChangeDomainName < ActiveRecord::Migration 
    def self.up 
    YourModel.update_all "url = REPLACE(url, 'www.old-domain-name.com', 'www.new-domain-name.com')" 
    end 

    def self.down 
    # ... 
    end 
end 

一件事在这种情况下要记住的是,如果你例如更换列名或类型在update_all之前的同一迁移中,在更改表之后以及在对其调用ActiveRecord方法之前,您需要执行YourModel.reset_column_information

2)您可以使用原始SQL与 “执行” 的方法:

def self.up 
    execute "UPDATE your_models SET url = REPLACE(url, 'www.old-domain-name.com', 'www.new-domain-name.com)" 
end 

个人而言,我更喜欢第一种方法。

+0

我的链接在其中有ID的应用程序,我想保持不同的元素。有没有办法我只能更新域名,并保持链接的其余部分完好无损? – jfedick

+0

我的代码 - 特别是MySQL的'REPLACE()'函数 - 完全就是这样,jfedick。看看文档:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace –

+0

好的,太棒了!谢谢你的帮助。 – jfedick

相关问题