def method_missing(meth, *args, &block)
if args.size == 1 && args.first.is_a?(DataMapper::Adapters::AbstractAdapter)
if (match = meth.to_s.match(/^(.*)_if_(none|begin|prepare|rollback|commit)$/))
if self.respond_to?(match[1], true)
self.send(match[1], args.first) if state_for(args.first).to_s == match[2]
else
super
end
elsif (match = meth.to_s.match(/^(.*)_unless_(none|begin|prepare|rollback|commit)$/))
if self.respond_to?(match[1], true)
self.send(match[1], args.first) unless state_for(args.first).to_s == match[2]
else
super
end
else
super
end
else
super
end
end