2016-04-12 13 views
0

Veritabanı tablosu "taban çizgileri" nin bir csv dökümünü oluşturacak basit bir komisyon görevi oluşturmaya çalışıyorum.Raylar: Bir komisyon görevinde bir csv dosyası oluşturma - sınıflar veritabanına erişemiyor column_names

task :send_report => :environment do 
    path = "tmp/" 
    filename = 'data_' + Date.today.to_s + '.csv' 
    Baseline.all.each do 
    CSV.open(path + filename, "wb") do |csv| 
     csv << Baseline.column_names 
     Baseline.all.each do |p| 
     csv << p.attributes.values_at(*column_names) 
     end 
    end 
    end 
end 

hatası

 undefined local variable or method `column_names' for main:Object 
alıyorum

Ben Baseline.column_names vs vs

Herhangi bir görünümde, konsolda çalışacak .... bu yüzden tamamen belirsiz duyuyorum düşünce takdir edilecektir.

cevap

1

İlk durumda Baseline.column_names'u belirtiyorsunuz, ancak values_at numaralı telefondan column_names numaralı telefonu arayın. Bu, böyle bir yöntemin bulunmadığı main bağlamında varsayılandır. Bir modele karşı çağrılmalıdır.

Bu iki tutarlı, Baseline her iki durumda da gereklidir.

+0

Teşekkür ederiz! - Bu işe yarıyor (bir hata atmıyor). Şu anda sahip olduğum sorun, dosyanın ortak klasördeki tmp dizininde görünmemesidir. – GhostRider

+0

Neden olur? Muhtemelen Rails kök olan geçerli dizine göre tmp/'soruyorsunuz. Eğer orada istiyorsan: 'yol = Rails.root.join ('public/tmp')'. – tadman

+0

Çok teşekkürler. Her iki yorumunuz da doğru olarak işaretlendi. – GhostRider

İlgili konular