Hi

I was also looking for similar 'proxy' mechanism. What I came up with
was:

module Proxy
  def Proxy.included(base)
    @@b = base
  end
  def proxy(o, &class_body)
    def o.parent() @@b end
    o.extend(Module.new(&class_body))
  end
end

class Foo
  include Proxy

  def initialize
    @user = ['john', 'doe']
  end

  def user_proxy
    proxy(@user) do
      def hi
        "Hello #{self.join(' ')} from class #{parent}"
      end
    end
  end

end

puts Foo.new.user_proxy.hi # => Hello john doe from class Foo

However, it would make more sense to use logic from AssociationProxy,
if it's already there.


On 25 Lut, 23:00, Jakub Kuźma <[email protected]> wrote:
> On Feb 25, 10:53 pm, Matt Jones <[email protected]> wrote:
>
> > Note that arrays have a metaclass, just like everything else:
>
> > def users
> >    result = [user_n, user_e, user_s, user_w]
> >    def result.owner(card)
> >      # define something; 'self' will be the array
> >    end
> >    result
> > end
>
> That's what I 
> did:http://codaset.com/qoobaa/libre/source/master/blob/app/models/board.rb
>
> But I need to access the parent (Board) class from the extension
> method. Probably I could use the JS version: to define that = self
> before the definition. Anyway - it'd be really great to have Proxy
> class in ActiveSupport I think.
>
> Thanks,
> Kuba.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en.

Reply via email to