2013-07-05 23 views
9

Bir .sqlite dosyasıyla Active Record ile bağlanarak etkileşim kurmaya çalışıyorum. Bunu yapmamın:Active Record set_table_name hatası .sqlite dosyası için

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 
veritabanına bağlantı veritabanı tabloları çıktısını gibi çalışır

verir:

ZPATIENT 
ZZCONFIG 
Z_PRIMARYKEY 
Z_METADATA 

Fakat Active kayıt modellerini Hastaya ZPATIENT tabloyu haritaya denemesi başarısı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>' 

Ne yaptığımdan emin değilim? Tabloyu modellere nasıl eşleyeceğinizi anlamak için Aktif Kayıt için bir tür geçiş yapmam gerekir mi?

+4

Belki de aptalca, ama 'set_table_name' yerine 'self.table_name' denediniz mi? – NicoSantangelo

cevap

28

set_table_name kaldırıldı. Bunu deneyin:

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

Bence yorumda ona cevap vermekten pişman olacağım: P – NicoSantangelo

+0

Bu harika çalıştı. Ayrıca @NicoSantangelo için teşekkürler, Yorumunuzu kabul edemiyorum üzgünüm – lukestringer90

+2

@NicoSantangelo Yukarıda açıklandığı gibi aynı halim var ama benim kodumdan herhangi birinde set_table_name yok. – Vinozio

İlgili konular