Проблемы с использованием модели ActiveRecord на существующей таблице - PullRequest
0 голосов
/ 17 июля 2010

Я создал модель для существующей таблицы, используя следующую команду генератора:

script/generate model Group

У рассматриваемой таблицы другое имя, поэтому я изменил модель, чтобы учесть ее.

set_table_name 'demandegroupe'

Тогда я запустил консоль, чтобы посмотреть, все ли работает.

>> Group.all
[#<Group login: "XXXXXX", ...>, ...]

Но, к моему удивлению, использование этой модели в представлении выдает странные ошибки. Я вернулся к консоли, чтобы убедиться, что у меня нет галлюцинаций, и вот что произошло:

>> Group.first
#<Group login: "XXXXXX", ...>
>> Group.first.login
NoMethodError: undefined method `generated_methods' for 50:Fixnum
        from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/attribute_methods.rb:247:in `method_missing'
        from (irb):2

После этого первое выражение больше не работает:

>> Group.first
NoMethodError: undefined method `column_names' for 50:Fixnum

Все столбцы либо varchar, либо int, откуда этот тип 50:Fixnum?

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 июля 2010

Наконец я допустил огромную ошибку или, точнее, упустил из виду важную деталь!Это простое столкновение имен столбцов, я рассмотрел их на предмет потенциальных проблем, но пропустил один, похороненный в 26 других.Этот вредоносный столбец был назван class, и после того, как AR сгенерировал свой магический код после доступа к любому столбцу, он просто заменил метод жизненного класса без каких-либо ошибок.

Я ожидал столкновения нескольких имен, так как имена столбцов казались записанными вФранцузский, поэтому не занял достаточно времени и, должно быть, прочитал «класс» или что-то в этом роде.Остерегайтесь могущественного столкновения имен!

Спасибо ehsanul и dmajkic за то, что они заставили меня просмотреть названия этих столбцов во второй раз.

0 голосов
/ 17 июля 2010

Вы используете Mysql? Группа - это зарезервированное ключевое слово sql. Похоже, что Rails 2.3.5+ обрабатывает это для mysql, но это может быть причиной проблемы, которую вы видите в других базах данных или других версиях Rails.

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