Slide 91
Slide 91 text
class User < ApplicationRecord
...
extend Ext::Factory
factory :admin_check, Users::AdminCheck, delegate: :can_admin?
end
module Ext
module Factory
def factory(method_name, clazz, delegate: [])
define_method(method_name) { clazz.new(self) }
return if Array(delegate).empty?
public_send(:delegate, *delegate, to: method_name)
end
end
end
Static Analysis • Reflection Tests • Strategic Investment