sql - Rails find method :select alias as id? -
i have .find method in 1 of rails controller actions - relevant part is:
.find(:all, :select => 'last_name id, last_name name')
i getting odd behaviour trying alias last_name column id - if alias else, works fine (i can last_name xyz
, outputs last name in column called xyz, using populate drop-down need have name in id column, need called 'id').
i should point out output id column, "id":0
.
could shed light on need column aliased 'id'?
thanks!
i'm not sure of how can in rails query statement. rails going try , take on id
column, casting value returned database id
type of column id
(presumably integer). that's why id
column keeps getting set 0, because "string".to_i #=> 0
however, there way it, once have results back.
since have question tagged rails 3, preferable use new activerelation syntax. can following:
# first, results query, loop through of them. customer.select("last_name 'ln', last_name 'name'").all.collect |c| # first step of loop attributes hash form h = c.attributes # next step create "id" key in hash. # hash#delete method deletes key/value pair @ key specified , returns value. # we'll take returned value , assign created "id" key. h["id"] = h.delete("ln") # , have call out hash ensure it's returned value collect. h end
that hash id
value text string value last_name
, name
value same.
hope helps!
Comments
Post a Comment