0

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

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

我知道还有其他方法可以解决它,但我想探索一下我在 Rails 迁移中的选择。

提前致谢!

4

1 回答 1

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需要更改同一迁移中的列名或类型等。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

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

于 2011-06-17T14:58:26.287 回答