Rails

2011-10-11 17 views
8

find_in_batches'daki find_in_batches_by_sql gibi bir şeyi nasıl yapabilirim (SQL Server) (SQL Server), SQL'i (görebildiğim kadarıyla) izin vermez.
find_by_sql'un yığın desteği yok (görebildiğim kadarıyla).Rails

find_in_batches_by_sql gibi bir şeyi nasıl yapabilirim?

SQL, programlı olarak oluşturulan kötü bir şeydir ve üçüncü taraf veritabanlarına işaret eder ve sonuç kümeleri, yüzbinlerce milyonlarca kayıt döndürülebilir.

ActiveRecord ile başka imleç numaraları var mı?

Teşekkürler.

cevap

4

Hep bölüme SQL kırmak ve

Model.select("*").where("WHERE CLAUSE HERE").joins("JOIN CLAUSES HERE").find_in_batches {...} 

böyle bir şey yapmak Yoksa gerçekten eğlenceli bir SQL şeyler gerekirse sonuçları bitkin kadar sadece bir ofset ve sınır ve döngü kullanabilirsiniz başladı. İşte temel fikir:

offset = 0 
limit = 1000 

while(results) 
    results = Model.find_by_sql("<your SQL here> OFFSET #{offset} LIMIT #{limit}") 
    offset += limit 
    # Do stuff here 
end 
1

ofset Not sonra sınırlamanız gerekir

offset = 0 
limit = 1000 

while(results) 
    results = Model.find_by_sql("<your SQL here> LIMIT #{limit} OFFSET #{offset}") 
    offset += limit 
    # Do stuff here 
end