Rails 3 — использование set_primary_key вызывает ошибку маршрутизации

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я долго искал Google и stackoverflow, но не могу найти решение своей проблемы.

В последнее время я использовал set_primary_key для таблицы с именем «employee», потому что мне нужно использовать номер персонала в качестве моего первичного ключа. Если я установлю код

 `set_primary_key :personel_number`
  

(Personel_number уже является столбцом, который я хочу использовать в качестве первичного ключа) в моей модели, прежде чем я сделаю rake db: migrate и, наконец, выполню миграцию, у меня возникают проблемы, когда я пытаюсь заполнить свою базу данных через браузер:

 `Couldn't find employee with ID=1`

`app/controllers/mitarbeiters_controller.rb:16:in `show'`
  

Rails ищет employee с ID = 1, но не может найти, потому что я установил первичный ключ из personel_number с 601 (например).

Могу ли я что-то сделать против этого или я должен позволить Rails сначала создать свой собственный: id?

Комментарии:

1. пожалуйста, опубликуйте маршруты, которые помогут вам

2. Да, rails действительно не хочет, чтобы вы использовали что-либо, кроме автоматически увеличиваемых целых чисел для вашего id. вы должны просто создать другое поле в модели для номера персонала и найти / выполнить поиск по нему

3. хорошо, я пытаюсь быть более точным: -> установить pk в model -> rake db: migrate -> rails s и просмотреть localhost: 3000 / employees -> теперь я ввожу нового сотрудника с персональным номером (который будет моим pk, например, 601 ) и именем -> браузер хочет перенаправить на employees / 1 ( img7.imagebanana.com/img/z5issu4s/1.PNG ), но rails не устанавливает ни для одного сотрудника id = 1 -> в браузере базы данных SQLite, я вижу что-то странное: img7.imagebanana.com/img/ga0pnpbn/2.png похоже, что попытка установить собственный первичный ключ и исключить идентификатор набора rails вызывает множество проблем….

4. Опубликуйте свое представление для «новой» страницы и вашего контроллера.

Ответ №1:

Похоже, когда страница переходит к контроллеру для создания сотрудника, у вас есть перенаправление, чтобы показать нового сотрудника, и он использует идентификатор по умолчанию.

Комментарии:

1. @ Craig: Да, я думаю, что это то, что происходит, но на самом деле, я такой новичок в rails, что понятия не имею, как решить эту проблему. просмотр «новой» страницы: <h1>New mitarbeiter</h1> <%= render 'form' %> <%= link_to 'Back', mitarbeiters_path %>

2. Я думаю, что лучше посмотреть это в текстовом файле: >>>>> мой взгляд на ‘new’: dl.dropbox.com/u/6663083/new.html.erb.txt >>>>> мое представление для _form.html.erb: dl.dropbox.com/u/6663083/_form.html.erb.txt >>>> мой контроллер: dl.dropbox.com/u/6663083/mitarbeiters_controller.txt примечание: поскольку я не являюсь носителем английского языка, таблицы приведены не на английском. «mitarbeiter» = «employee»; «personalnr» = «personel_number» Заранее спасибо! 🙂