2010-07-23 4 views
0

Je dois me connecter depuis mon application Rails à une base de données distante sur une application Java.Refactorisation SQL

J'ai une requête comme ceci:

find_by_sql("select c_templateid, c_templateinfoid, c_startdate, c_enddate, c_active, 
campaign, shortcode, prefix, c_descriptivename, c_description, c_templatename 
from (active_services aser join activity a on aser.c_primaryprefixid = 
a.c_primaryprefixid) join matrix_templateinfo using(c_templateinfoid) 
where campaign is not null)") 

Je dois factoriser à la méthode find AR #(), parce que je veux ajouter plus tard complexes: des conditions. Je ne veux pas les convertir en chaîne pour les ajouter ensuite à la méthode find_by_sql.

find(:all, 
    :select => "c_templateid, c_templateinfoid, c_startdate, c_enddate, c_active, 
    campaign, shortcode, prefix, c_descriptivename, c_description, c_templatename", 
# :joins => WHAT I SHOULD DO HERE ? 
    :conditions => "campaign is not null" 
) 

Répondre

1

Vous pouvez également spécifier des jointures complexes entre dans: joint

:joins => "matrix_templateinfo ON <conditions go here> AND campaing IS NOT NULL" 

mais vous devriez vraiment commencer padronizing vos noms si vous utilisez des rails:]

+0

J'ai refondus http://gist.github.com/487539, mais je ne sais pas si ces requêtes sont égales? – astropanic