2011-03-10 16 views
36

Kullanıcı tablosuna kullanıcı ekleyen bir Ruby (1.9.2) -on-Rails (3.0.5) sorgulama görevi tanımlamak istiyorum. dosya şuna benzer:Raylar Rake Görev - Model sınıfına erişim

#lib/tasks/defaultuser.rake 
require 'rake' 
namespace :defaultuser do 
    task :adduser do 
    u=User.new 
    u.email="[email protected]" 
    u.password="password" 
    u.save 
    u.errors.each{|e| p e} 
    end 
end 

Sonra ben kod test

> rake defaultuser:adduser 

olarak görev çağırmak olacaktır: Raylar konsolda İÇİNadduser görev ve iyi çalışıyor. Ben görevin gövdesinde sadece

print "defaultuser:adduser" 

çalışan, tırmık görevi test ve iyi çalıştı. Onları birleştirildiğinde

Ancak,
rake aborted! 
uninitialized constant User 

ben tırmık dosyasında ad tanımı yukarıda bir

require File.expand_path('../../../app/models/user.rb', __FILE__) 

çalıştı söyleyerek şikayetçi, ama bu işe yaramadı. Ben

rake aborted! 
ActiveRecord::ConnectionNotEstablished 

ne var ben Raylar konsolunda var Rake görevi Kullanıcı modeli sınıfa aynı erişibileceğinizden yapmama gerek var mı?

+0

Benzer soru: [? Raylar görevleri ActiveRecord modelleri erişim sağlayan komisyon musunuz] [1] [1]: http://stackoverflow.com/questions/876396/do-rails-rake-tasks -provide-access-to-activerecord-modelleri –

cevap

91

Sen yakınsın :)

#lib/tasks/defaultuser.rake 
require 'rake' 
namespace :defaultuser do 
    task :adduser => :environment do 
    ... 
    end 

Not kullanımı: tırmık görevi aramadan önce gerekli Raylar ortamını kurar çevre,. Bundan sonra, Kullanıcı nesnesinin kapsamı olacaktır.

+3

Ahhhhhhhhhhhhh! Yaklaşmıştım. Ben olsa sözdizimi anlamıyorum. –

+0

http://jasonseifer.com/2010/04/06/ brake-tutorial Bu eğitici problem üzerine daha fazla ışık tutuyor ve aynı zamanda komisyon görevini parametreleştirmenin güzel bir yolunu gösteriyor. –

İlgili konular