2014-09-29 257 views
0

我已經爲數據庫創建了模型'MyModel'以及相關的視圖,控制器和遷移。現在,當我試圖從軌道控制檯向它添加一些數據時,出現以下錯誤。Rails NoMethodError:未定義方法

myrailsapp>> m = MyModel.new() 
(pry) output error: #<NoMethodError: undefined method 'mymodel' for #<MyModel:0x000000009d863>> 

請大家幫忙。

遷移

class CreateMyModel < ActiveRecord::Migration 
    def change 
    create_table :mymodels do |t| 
     t.belongs_to :vendor, index: true 
     t.string :name, uniq: true, index: true 
     t.string :type 
     t.boolean :audio 
     t.boolean :video 
     t.boolean :discontinued 
     t.timestamps 
    end 
    end 
end 

爲MyModel

class MyModel < ActiveRecord::Base 
    belongs_to :vendor 

    TYPES = [ 
    'A', 
    'B', 
    'C' 
    ] 
    FEATURES = ['Audio', 'Video', 'Discontinued'].freeze 
end 

mymodels

create_table "my_models", force: true do |t| 
    t.integer "vendor_id" 
    t.string "name" 
    t.string "type" 
    t.boolean "audio" 
    t.boolean "video" 
    t.boolean "discontinued" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

add_index "recorders", ["vendor_id"], name: "index_recorders_on_vendor_id", using: :btree 
+0

您可以加入您的模型添加一條線? – 2014-09-29 11:56:06

+0

添加MyModel的詳細信息 – theGeekster 2014-09-29 13:35:24

+0

您能否獲得比此更好的堆棧跟蹤?如果你安裝了better_errors gem,可能會有所幫助。 – 2014-09-29 13:41:23

回答

0

不知道這是實際問題引起的錯誤,但你似乎已經命名自己的表錯:

MyModel應該有一個my_models表,而不是mymodels

駝峯轉換爲小寫用下劃線(snake_case)。

0

只需在你的模型

 class MyModel < ActiveRecord::Base 
     self.table_name = "mymodels" 
     belongs_to :vendor 

     TYPES = [ 
      'A', 
      'B', 
      'C' 
      ] 
     FEATURES = ['Audio', 'Video', 'Discontinued'].freeze 
    end 

這就是所有

+0

您的意思是我應該刪除MyModel中的所有其他內容?就像你寫的那樣放一行?在做出這些改變後,我應該重新遷移還是什麼? – theGeekster 2014-09-29 14:06:32

+0

不,只是添加self.table_name =「mymodels」您的模型頂部 – navinspm 2014-09-29 14:10:52

+0

我添加了行,如你所建議的,但仍然沒有區別,相同的錯誤。 – theGeekster 2014-09-29 14:15:29

相關問題