2011-01-22 18 views
6

Bir tablodaki bir BLOB alanını bir diğerine kopyalamam gerekiyor ve bunu yapmak için INSERT-SELECT sorgusu kullanmak istiyorum.Rails API'sı ile bir INSERT SELECT işlemini yapabilir miyim?

INSERT INTO target_table (key, data, comment) 
    SELECT 'my key', data, 'some comment' FROM source_table 

bu Raylar API ile yapılabilir?

Tabii ki veritabanına yerel bir sorgu göndermek için her zaman ActiveRecord::Base.connection kullanabilirdim, ancak bunu yapmak için bir "Raylar yolu" bulmayı umuyorum. (Bu, aslında veriyi Rails uygulamasına yüklemeyi içermez)

+0

Rails belgelerinde gezinirken merak etmeyenler için, ActiveRecord :: Base.connection API çağrısı örneğine sahip olmak mantıklı olmaz mı? Belli ki, bu belgelerin dışına çıkma konusunda açık olmayan bir şey buluyorum .... – Philip

cevap

3

Bu, SQL'i doğrudan ActiveRecord::Base.connection kullanarak kullanmanın anlam ve duyarlılık yarattığı tipik bir senaryodur. Açıkladığınız gibi herhangi bir ray yolu yoktur. Bir tane olsa bile, onu belleğe yüklemek ve iki modeli içeren hedef masaya sokmak zorundadır; Bu delilik.

+3

"Tipik senaryo" ifadesine katılıyorum, ama neden herhangi bir şekilde olabileceğini düşünüyorsunuz? Sadece, her şeyi belleğe yüklemeden Arel'un yapabileceği harika şeyleri düşünün. –

+0

Teşekkürler DR, yukarıdaki yorumunuzdan dolayı Rails-3 ile Arel hakkında bilgi edindim. Bu yüzden onu oylarım! Arel ile, söz konusu olan gibi bir sorgu muhtemelen mümkün. – karthiks

İlgili konular