我可以使用rails迁移编辑数据库中的字段吗?

时间:2011-06-17 14:41:32

标签: ruby-on-rails-3 rails-migrations

我有一个链接数据库,这些链接都指向特定网站,但该网站上有不同的网页。那么网站的域名发生了变化,我需要更新我的数据库以反映这一变化。我只需要更改域名,链接的其余部分工作正常。

我的问题是,我可以使用rails迁移来执行此操作吗?要编辑列中的所有字段并更新它们?这会是什么样的?

我知道还有其他方法可以解决这个问题,但我想探索一下使用rails迁移的选项。

提前致谢!

1 个答案:

答案 0 :(得分: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

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

2)您可以将原始SQL与“execute”方法一起使用:

YourModel.reset_column_information

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