rails 3 test error: Mysql2 :: Ошибка: неизвестный столбец - PullRequest
1 голос
/ 31 мая 2011

ребята, я получаю сообщение об ошибке при тестировании моего приложения rails после http://guides.rubyonrails.org/testing.html,It, сказанного:

test_the_truth (ClassroomTypeTest): ActiveRecord :: StatementInvalid: Mysql2 :: Ошибка: неизвестный тип столбца в «списке полей»: INSERT INTO classroom_types (type, memo, created_at, updated_at, id) VALUES (' MyString ',' MyString ',' 2011-05-31 08:40:54 ',' 2011-05-31 08:40:54 ', 980190962)

Я запутался, у меня нет таблицы в моей таблице classroom_types, почему такая ошибка появляется? Может кто-нибудь мне помочь? Большое спасибо!

Вот мои модели и отношения:

Модель ClassroomType:

class ClassroomType < ActiveRecord::Base
  has_many :classrooms
end

Модель Классной комнаты:

class Classroom < ActiveRecord::Base
   belongs_to :classroom_type
   belongs_to :teaching_building
end

Модель TeachingBuilding:

class TeachingBuilding < ActiveRecord::Base
  has_many :classrooms
end

А вот и соответствующие таблицы:

классы:

  • id
  • classroom_no
  • classroom_name
  • classroom_type_id
  • teaching_building_id

classroom_types:

  • ID
  • имя
  • памятка * * тысяча пятьдесят-одна

teaching_buildings:

  • ID
  • t_no
  • имя

Ответы [ 3 ]

1 голос
/ 01 июня 2011

Я полагаю, что проблема связана с именами столбцов.Когда rails выполняет полиморфные ассоциации, он объединяет таблицы с идентификатором и выбирает объединенную таблицу из столбца xxx_type.Я мог бы представить, что ваша проблема исчезнет, ​​если вы замените «type» на (например) «kind» в именах баз данных и столбцов.

0 голосов
/ 18 июля 2014

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

0 голосов
/ 01 апреля 2012

Самуил

Я столкнулся с подобной проблемой, но решил вот как

  1. перейти на локальный сервер MySQL
  2. затем измените сопоставление имени столбца mysql на модель, имеющую принадлежность_to
  3. Использование "ALTER TABLE tablename CHANGE oldname newname VARCHAR (10) ;"
  4. Это потому, что rails создает значение по умолчанию как user_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...