2013-07-05 14 views
9

Próbuję wejść w interakcję z plikiem .sqlite, łącząc się z nim za pomocą rekordu aktywnego. Robię to:Aktywny rekord błąd set_table_name dla pliku .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 

Połączenie z bazą danych działa jak drukowanie tabel baz danych daje:

ZPATIENT 
ZZCONFIG 
Z_PRIMARYKEY 
Z_METADATA 

Ale próba map ZPATIENT tabeli Patient Całość modele Record powiedzie się z:

~/.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>' 

Nie jestem pewien, co robię źle? Czy muszę wykonać jakąś migrację do Active Record, aby zrozumieć, jak zmapować tabelę do modeli?

+4

Może to głupie, ale czy wypróbowałeś 'self.table_name' zamiast' set_table_name' ?? – NicoSantangelo

Odpowiedz

28

set_table_name został usunięty. Spróbuj z:

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

Myślę, że będzie żałować, dając mu odpowiedź w komentarzu: P – NicoSantangelo

+0

Dzięki, że działało świetnie. Podziękowania także dla @NicoSantangelo, przepraszam Nie mogę zaakceptować twojego komentarza – lukestringer90

+2

@NicoSantangelo Mam ten sam błąd, jak opisano powyżej, ale nie mam set_table_name w żadnym z mojego kodu. – Vinozio

Powiązane problemy