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.