У устаревшей таблицы возникли проблемы с set_primary_key - PullRequest
0 голосов
/ 28 апреля 2011

Я создал скаффолд для устаревшего представления базы данных SQL Server, в котором есть текстовый первичный ключ без столбца идентификатора.У меня есть set_primary_key "Gift_ID" в модели, но я получаю ошибку в методе show.

Я могу перечислить записи в порядке, но когда я нажимаю на ссылку показать, она выдает ошибку.Кажется, он использует id для поиска записи, хотя у меня есть set_primary_key в модели.Вот полный текст отображаемой ошибки:

NoMethodError in PledgesController#show

undefined method `eq' for nil:NilClass
Rails.root: /home/steve/RubymineProjects/otatest

Application Trace | Framework Trace | Full Trace
app/controllers/pledges_controller.rb:16:in `show'
Request

Parameters:

{"id"=>"PL-24681"}
Show session dump

Show env dump

Response

Headers:

None

Может кто-нибудь пролить свет на то, почему он все еще пытается использовать «id» в качестве ключа?Спасибо за любую помощь!

1 Ответ

1 голос
/ 03 мая 2011

Я решил свою проблему, поэтому подумал, что отвечу на свой вопрос, если он кому-нибудь поможет; Я отказался от использования опции set_primary_key в модели и добавил поле «id» в представление в моей прежней системе (SQL Server), используя ключевое поле в данных. Это решило проблему с идентификатором.
Я также обнаружил, что сгенерированные имена полей scaffolding чувствительны к регистру. Поэтому я использовал представление, чтобы установить все имена полей в нижний регистр. Вы могли бы убедиться, что ваш случай в скаффолдинге соответствует устаревшим именам полей, но я обнаружил, что проще просто установить их все в нижний регистр. Еще кое-что; У меня было несколько устаревших логических полей, которые имели "?" в конце имени поля леса тоже не понравились, поэтому я удалил "?" в представлении.

В итоге, создание приложения Rails поверх унаследованной системы имеет свои проблемы. Я обнаружил большинство своих проблем, перенеся таблицу в унаследованную базу данных и изучив способ создания полей, а затем изменив представление в соответствии.

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