Skip to content

Instantly share code, notes, and snippets.

@mbj
Created November 6, 2012 22:12
Show Gist options
  • Save mbj/4027962 to your computer and use it in GitHub Desktop.
Save mbj/4027962 to your computer and use it in GitHub Desktop.
dm-1 associated records external tree walker
class TreeWalker
def initialize(customer, &block)
@customer, @block = customer, blocj
end
def emit(resource)
@block.call(resource)
end
def customer(customer)
customer.users.each do |user|
emit(user)
user(user)
end
end
def user(user)
user.stuff.each do |stuff|
emit(stuff)
stuff(stuff)
end
end
def run
customer(customer)
end
def self.run(customer, &block)
new(customer, &block).run
self
end
end
@mbj
Copy link
Author

mbj commented Nov 6, 2012

Use with:

TreeWalker.run(customer) do |record|
  do_stuff_with(record)
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment