sqlite & rails: изменить столбец первичного ключа? - PullRequest
3 голосов
/ 17 февраля 2011

В моей базе данных есть таблица (sqlite) с именем books, которой автоматически присваивается столбец id с помощью rails 3 при создании таблицы. В таблице также есть столбец с именем «isbn», который, очевидно, является целым числом.

Теперь я бы хотел изменить первичный ключ таблицы на столбец isbn, а затем удалить исходный столбец id.

Можно ли это сделать при миграции рельсов? Как?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Конечно, но не делай этого.

Если вы хотите использовать 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
2 голосов
/ 17 февраля 2011

ISBN не является целым числом - например, он может иметь начальные нули.ISBN должен быть текстовым типом - вам не нужны какие-либо «интеллектуальные» числовые корректировки / принуждения.

Было бы лучше, я думаю, оставить все как есть и разместитьИндекс на ISBN.Изменение структуры таблицы SQLite после этого может быть неудобным.Я не знаю о реализации Rails.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...