[LRUG] Active Record find_by_sql head-scratcher
gvim
gvimrc at gmail.com
Fri Jul 15 06:03:30 PDT 2016
In Rails console this Active Record query:
logrow = LogForm.find_by_sql([log_row_sql(5339), 18998])[0]
... produces the output:
LogForm Load (17.0ms) SELECT
masterid,activityid,firstname,surname,sex,age,address,towncity,postcode,l.county
AS usercounty,tel,mobile,email,dancer,updates,source,rooms,
occupancy,ch1firstname,ch1surname,ch1sex,ch1age,ch2firstname,ch2surname,ch2sex,ch2age,to_char(eventdate,'DD
Mon YYYY') as
eventdate,eventmusic,eventinfo,participants,vouchernum,pin,to_char(voucherexp,'DD
Mon YYYY') as voucherexp,expcode,a.header as subject, a.title,a.type,
a.template, p.header as dancestyle, p.text as package, l.packageid,
p.package as
abbrev,participants,person2_firstname,person2_surname,person2_sex,level,location,district,postarea,m.county
AS provcounty,pemail,pemail2,pname,ptel,pmobile FROM log_form l,
activities a, packages p, vmaster m WHERE l.id = 18998 AND l.packageid =
p.id AND l.activityid = a.id AND l.masterid = m.id
.... followed by:
#<LogForm:0x007faeb396b1d0 id: nil, activityid: 9, packageid: 244,
masterid: 5339, firstname: "Alan", surname: "Short", sex: "male", age:
"adult", address: "12 Kember Road", towncity: "London", postcode:
"SW81FG", tel: "02077629045", mobile: nil, email:
"alan.short276 at gmail.com", dancer: nil, updates: "yes", source: nil,
eventdate: nil, eventmusic: nil, eventinfo: nil, vouchernum: "asd123",
expcode: nil, voucherexp: Thu, 08 Aug 2019, rooms: nil, occupancy: nil,
ch1firstname: nil, ch1surname: nil, ch1sex: nil, ch1age: nil,
ch2firstname: nil, ch2surname: nil, ch2sex: nil, ch2age: nil,
participants: nil, person2_firstname: nil, person2_surname: nil,
person2_sex: nil, level: nil, pin: nil>
Many fields are missing in the second part of the output but in Rails
console but I can access these missing attributes, eg. logrow.template
... or ... logrow[:template] and both return the data: "standard".
However, the same AR query in my application returns nil for
logrow[:template] despite the Rails error page showing the same value
for logrow as the second part of the console output (above).
It appears these missing fields are only available within Rails console,
for some reason, as the same values (5339, 18998) are passed to the same
query in the app.
gvim
More information about the Chat
mailing list