Rails和Active Record:可以批量分配ID吗?

时间:2013-12-27 00:27:06

标签: ruby-on-rails activerecord

我正在将公告板从PHP(mysql)迁移到Rails(PG),对于SEO,我必须为主题保留相同的ID。

我的迁移脚本使用标准类方法,因此我创建了一个带有批量分配的新主题。使用此解决方案postgres为我提供了一个与我的原始ID不同的增量ID。

有没有办法强制身份证?我知道id是唯一的(它们来自我的mysql数据库)但我需要保持SEO的身份和url重写。我在这里找到了一个解决方案,但现在已经弃用了。

1 个答案:

答案 0 :(得分:0)

像这样创建您的迁移:

create_table :table_name, {id: false} do |t|
  t.int :your_custom_id
  # .. other columns ...
end
execute "ALTER TABLE `table_name` ADD PRIMARY KEY (your_custom_id);"

最后,要让Rails将此非标准id字段视为您的主ID,请在模型中添加以下代码:

set_primary_key :your_custom_id       # for Rails 3
self.primary_key = :your_custom_id    # for Rails 4

现在,将此字段设置为不受质量保护,并将其用作普通字段。


但是,我真的建议您只需设置一个新的表列(即字段),类似old_id,而不是混淆默认的Rails id字段。完成后,在路线中使用该字段。