代码之家  ›  专栏  ›  技术社区  ›  astropanic

重构SQL

  •  0
  • astropanic  · 技术社区  · 15 年前

    我必须将我的Rails应用程序连接到Java应用程序上的远程数据库。

    我有这样一个问题:

    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)")
    

    我需要将它重构为ar find()方法,因为我希望以后在上面添加复杂的:条件。我不想把它们转换成字符串来附加,然后用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"
    )
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Draiken    15 年前

    也可以在中指定复杂联接:联接

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

    但是,如果您使用的是rails,那么就应该开始对字段名进行padronizing:]