更强的活动记录ID

时间:2017-01-02 01:25:09

标签: ruby-on-rails activerecord

我们如何获得Active Record来创建更复杂的ID,这些ID不仅仅是自然数(1,2,3 ......)。我不确定我是否应该使用数据库ID来识别对象,但我现在在生产中让它们像这样是非常不安全的。

1 个答案:

答案 0 :(得分:1)

让我们假设你想要一个名为slug的列使用名为Post的对象。

  • 为该表格创建slug
  • before_create模型中创建一个Post方法,该方法会在保存记录之前生成唯一的slug值。也许做一些检查以确保它是独一无二的
  • 将公开面临的任何内容替换为使用Post.find_by(slug: id)而非Post.find(id)
  • 确保所有网址生成都使用以下内容:post_path(id: post.slug),以便它不会将id放入网址。