On Tue, 12 Dec 2006, Sebastia wrote:

> I have a sorted array (in this case, an ActiveRecord result set) that i want 
> to give awareness of its sorting state. I defined a singelton method on the 
> array but i can't figure out how to insert a value from the surrounding 
> scope. Below is the best i could come up with, but it seems quite horrid (and 
> using plain eval would be even worse i suppose). I seem to remember that 
> there was a better way... Anybody?
>
> Thanks,
> Sebastian
>
> sort_term = "label"
> results = User.find(:all, :order => sort_term)
>
> class << results
> def sorted_by?
> @sorted_by_term
> end
> end
>
> results.instance_variable_set("@sorted_by_term",sort_term)

why not just use an attr

   results = User.find :all, :order => sort_term

   class << results
     attr_accessor 'sorted_by'
     alias_method 'sorted_by?', 'sorted_by'
   end

   results.sorted_by = "label"

othewise you need to use module_eval and define_method due to the scoping.

-a
-- 
if you want others to be happy, practice compassion.
if you want to be happy, practice compassion.  -- the dalai lama