sqlite& rails:更改主键列?

时间:2011-02-17 14:21:37

标签: ruby-on-rails sqlite ruby-on-rails-3

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

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

这可以通过rails迁移来完成吗?怎么样?

2 个答案:

答案 0 :(得分:2)

ISBN不是整数 - 例如,它可以有前导零。 ISBN应该是文本类型 - 您不希望在那里进行任何类型的“智能”数字调整/强制。

我认为,将事情保留原样并在ISBN上放置一个独特的索引会更好。事后改变SQLite表结构可能很尴尬。我不知道Rails的实现。

答案 1 :(得分:2)

当然,但不要这样做。

如果您想使用isbn进行查询,请改为更新您的模型

class Book < ActiveRecord::Base

  def to_param
    self.isbn
  end

end

和您的控制器

class BooksController

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

  # and similar for other actions
end