Ruby on rails sqlite&;rails:是否更改主键列?

Ruby on rails sqlite&;rails:是否更改主键列?,ruby-on-rails,sqlite,ruby-on-rails-3,Ruby On Rails,Sqlite,Ruby On Rails 3,我的数据库(sqlite)中有一个名为books的表,在创建该表时,rails 3会自动为该表指定一个id列。该表还有一个名为“isbn”的列,它显然是一个整数 现在我想将tables主键更改为isbn列,然后删除原始id列 rails迁移可以做到这一点吗?怎么做?ISBN不是整数——例如,它可以有前导零。ISBN应该是一种文本类型——你不希望那里发生任何“智能”数字调整/强制 我认为,最好还是保持现状,在ISBN上建立一个独特的索引。事后更改SQLite表结构可能会很尴尬。我不知道Rails的

我的数据库(sqlite)中有一个名为books的表,在创建该表时,rails 3会自动为该表指定一个id列。该表还有一个名为“isbn”的列,它显然是一个整数

现在我想将tables主键更改为isbn列,然后删除原始id列

rails迁移可以做到这一点吗?怎么做?

ISBN不是整数——例如,它可以有前导零。ISBN应该是一种文本类型——你不希望那里发生任何“智能”数字调整/强制


我认为,最好还是保持现状,在ISBN上建立一个独特的索引。事后更改SQLite表结构可能会很尴尬。我不知道Rails的实现。

当然知道,但不要这样做

如果您想使用isbn进行查询,请按以下方式更新您的模型

class Book < ActiveRecord::Base

  def to_param
    self.isbn
  end

end

这是否意味着我可以通过执行:GET/books/[isbn]而不是/books/[id]来显示单个书籍?你知道,我自己刚刚尝试过,结果证明确实如此。谢谢你,亨里克!在我问这个问题之前,在谷歌上搜索时,我当然会觉得很尴尬!关于前导零的观点很好,谢谢。
class BooksController

  def show
    @book = Book.find_by_isbn(params[:id])
  end

  # and similar for other actions
end