2016-06-27 5 views
0

Je travaille actuellement sur une application Ruby on Rails. J'essaye de créer des objets de type Item, mais je ne peux pas trouver mon modèle, qui est déjà défini. Qu'est-ce que je fais mal?NameError: constante non initialisée Item

extrait:

parse.rake (app/lib/tâches):

item = Item.create!(id: item_array['id'], path: item_array['path'], type: item_array['type'], lang: item_array['lang'], component: item_array['component'], 
      content: item_array['content'], title: item_array['title'], index: item_array['index'], tags: item_array['tags'], created_at: item_array['created_at'], 
      updated_at: item_array['updated_at'], keyword: item_array['keyword'], description: item_array['description']); 

item.rb (app/models)

class Item < ActiveRecord::Base 
    self.table_name = 'my_items' 
    self.primary_key = 'id' 
end 

schema.rb (app/db):

ActiveRecord::Schema.define(version: 20160623145822) do 


create_table 'items', force: :cascade, options: 'ENGINE=InnoDB DEFAULT CHARSET=utf8' do |t| 
    t.string 'path' 
    t.string 'type' 
    t.string 'lang' 
    t.string 'component' 
    t.json  'content' 
    t.string 'title' 
    t.integer 'index' 
    t.json  'tags' 
    t.string 'keyword' 
    t.text  'description', limit: 65535 
    t.datetime 'created_at',    null: false 
    t.datetime 'updated_at',    null: false 
    end 

end 

Répondre

2

En classe Item vous définissez une table 'my _items ', mais dans le schéma, vous créez des' items 'de table.

Je pense que vous pouvez supprimer table_name et modifier primary_key dans l'élément de modèle. Parce que RoR utilisera par défaut la table 'items' et la clé primaire 'id'.

+0

merci beaucoup, ça marche maintenant. – fr0styy