2011-05-31 73 views
1

傢伙,當我測試軌道繼http://guides.rubyonrails.org/testing.html應用程序,我得到一個錯誤,它說:軌道3測試誤差:Mysql2 ::錯誤:未知列

test_the_truth(ClassroomTypeTest): ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'type' in 'field list': 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_NR中
+0

你運行耙分貝:測試:負載,以便您的測試分貝的安裝方式config/schema.rb指定? – moritz 2011-05-31 13:18:30

+0

是的,我在完成代碼和遷移之後運行了命令,這正是指南網站告訴我要做的步驟。 – samuel 2011-06-01 07:38:56

回答

1

我想這個問題在於你的列命名。當rails執行多態關聯時,它會使用一個id連接這些表並從xxx_type列中選擇已連接的表。如果在數據庫名稱和列名稱中使用(例如)「kind」替換「type」,我可以想象你的問題會消失。

+0

前一段時間我遇到了這個問題,這有所幫助。 – SZH 2011-06-01 17:47:11

0

塞繆爾

我曾經遇到過類似的問題,但解決 這裏是如何

  1. 去到mysql的LocalServer
  2. 然後更改MySQL的列名correspoding模型有belongs_to的
  3. 使用"ALTER TABLE tablename CHANGE oldname newname VARCHAR (10) ;"
  4. 這是因爲rails會創建默認爲user_id
0

我認爲問題是列命名,請檢查你的數據庫表的列名和類型,並設置它根據你的錯誤消息說