我有一个链接数据库,这些链接都指向特定站点,但该站点上的页面不同。那么网站的域发生了变化,我需要更新我的数据库以反映这种变化。我只需要更改域名,链接的其余部分工作正常。
我的问题是,我可以使用 Rails 迁移来执行此操作吗?要编辑列中的所有字段并更新它们?这会是什么样子?
我知道还有其他方法可以解决它,但我想探索一下我在 Rails 迁移中的选择。
提前致谢!
我有一个链接数据库,这些链接都指向特定站点,但该站点上的页面不同。那么网站的域发生了变化,我需要更新我的数据库以反映这种变化。我只需要更改域名,链接的其余部分工作正常。
我的问题是,我可以使用 Rails 迁移来执行此操作吗?要编辑列中的所有字段并更新它们?这会是什么样子?
我知道还有其他方法可以解决它,但我想探索一下我在 Rails 迁移中的选择。
提前致谢!
当然,你有两个选择。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
我个人更喜欢第一种方法。