2013-07-05 4 views
9

J'essaie d'interagir avec un fichier .sqlite en me connectant avec Active Record. Je fais ceci:Active Record nom_table_table_name pour le fichier .sqlite

require 'active_record' 

# Connect to DB 
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => 'database.sqlite') 

# Log the tables to make sure Active Record is connected to the DB correclty 
puts ActiveRecord::Base.connection.tables 

# Map from existing table records to a Active Record model 
class Patient < ActiveRecord::Base 
    set_table_name "ZPATIENT" 
end 

La connexion à la base de données fonctionne comme l'impression sur les tables de base de données donne:

ZPATIENT 
ZZCONFIG 
Z_PRIMARYKEY 
Z_METADATA 

Mais la tentative de la carte ZPATIENT table Patient modèles Active Record échoue avec:

~/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-4.0.0/lib/active_record/dynamic_matchers.rb:22:in `method_missing': undefined method `set_table_name' for Patient(Table doesn't exist):Class (NoMethodError) 
    from script.rb:8:in `<class:Patient>' 
    from script.rb:7:in `<main>' 

Vous ne savez pas ce que je fais mal? Ai-je besoin de faire une sorte de migration pour Active Record pour comprendre comment mapper la table aux modèles?

+4

Peut-être que c'est stupide, mais avez-vous essayé 'self.table_name' au lieu de' set_table_name' ?? – NicoSantangelo

Répondre

28

set_table_name a été retiré. Essayez avec:

class Patient < ActiveRecord::Base 
    self.table_name = 'ZPATIENT' 
end 
+7

Je vais regretter de lui avoir donné la réponse dans le commentaire: P – NicoSantangelo

+0

Merci qui a bien fonctionné. Merci aussi à @NicoSantangelo, désolé je ne peux pas accepter votre commentaire – lukestringer90

+2

@NicoSantangelo J'ai la même erreur que décrite ci-dessus, mais je n'ai pas set_table_name dans aucun de mon code. – Vinozio