On 2007-10-01 22:58:25 +0200, "Logan Capaldo" <logancapaldo / gmail.com> said:

> On 10/1/07, Josselin <josselin / wanadoo.fr> wrote:
>> in a RoR plugin, I am passing a string parameter (column name) i.e
>> 'karma' as the sort parameter:
>> 
>> User.select { |u| u.id > 20 }.sort_by { |u| u.id }
>> "SELECT * FROM users WHERE (users.`karma` > 20) ORDER BY users.karma"
>> 
>> Is there any tric to pass a dynamic parameter as a variable ?
>> User.select { |u| u.id > 20 }.sort_by { |u| ...... }
>> 
>> I tried
>> @criteria = 'id'
>> User.select { |u| u.id > 20 }.sort_by { |u| u.send @criteria }
>> 
>> but it generates a wrong SQL
>> "SELECT * FROM users WHERE users.`id` > 20 ORDER BY users.send"
>> 
>> 
>> thanks for your help
>> 
> This is really a rails specific question but here's a guess on how you
> might be able to do it, if this doesn't work you should really try the
> rails list. Actually you should probably try the rails list even if
> this does work, there's almost certainly a better way to do this than
> i what I am suggesting.
> 
> @criteria = 'id'
> User.select { |u| u.id > 20 }.sort_by { |u| u.method_missing @criteria }
> 
>> joss

thanks a lot for your advice... that's true it's a Rail specific 
question, ... the plugin's developer mentionned that it's not possible 
at the present time to do what I want to do... (future release) but he 
gave me a trick to go on without waiting for the new coming release....
this plugin is trying to hide all SQL calls behind a full Ruby 
interface , already very useful.....
for interested people see    :

http://errtheblog.com/post/10722

joss