Order of results from find(array)

Dave wrote:

Hi all,

I'm using find to query my database using an array of IDs that represent the records I want to pull. But when the results come back they are in a different order than that I requested them in.

For instance, I have this array of IDs:

ids = [6, 4, 1, 5, 2, 3]

I want to pull the records with these IDs from the database so I use:

@records = Model.find(ids)

The result from this query comes back in numerical order (which is what I don't want), so the records would be ordered:

[1, 2, 3, 4, 5, 6]

*not* what I want, I really want the same order: [6, 4, 1, 5, 2, 3]

is there any way to maintain the order of the records? So the order of the IDs in the array I requested the records with?

Thanks in advance!

If you're using MySQL you might want to investigate FIELD. This is from memory by I managed this with something like :order =>"FIELD(my_table.id, '6, 4, 1, 5, 2, 3'"

No idea about other DBs

Hope this helps Chris