[LRUG] Conditionally built SQL suitable for Active Record/Rails?

gvim gvimrc at gmail.com
Sun Feb 28 13:12:06 PST 2016


I'm converting a Perl web application to Rails which contains a lot of 
conditionally-built SQL such as this:

sub log_row_sql {
   my $master = shift;
   my $sql  = q(SELECT 
masterid,firstname,surname,sex,age,address,towncity,postcode,l.county AS 
usercounty,tel,mobile,);
      $sql .= q(email,dancer,updates,source,rooms, 
occupancy,ch1firstname,ch1surname,ch1sex,ch1age,ch2firstname,);
      $sql .= q(ch2surname,ch2sex,ch2age,to_char(eventdate,'DD Mon 
YYYY') as eventdate,eventmusic,eventinfo,participants,);
      $sql .= q(vouchernum,pin,to_char(voucherexp,'DD Mon YYYY') as 
voucherexp,expcode,a.header as subject, a.title,);
      $sql .= q(a.type, a.template, p.header as dancestyle, p.text as 
package, l.packageid, p.package as abbrev,);		
      $sql .= 
q(participants,person2_firstname,person2_surname,person2_sex,level);
      $sql .= q(,location,district,postarea,m.county AS 
provcounty,pemail,pemail2,pname,ptel,pmobile) unless $master eq 'e';
      $sql .= q( FROM log_form l, activities a, packages p);
      $sql .= q(, vmaster m) unless $master eq 'e';
      $sql .= q( WHERE l.id = ?);
      $sql .= q( AND l.packageid = p.id);
      $sql .= q( AND l.activityid = a.id);
      $sql .= q( AND l.masterid = m.id) unless $master eq 'e';
   return $sql;
}

It seems this is not a good fit for Active Record and maybe Rails in 
general?

gvim



More information about the Chat mailing list