def resolve_value(presenter, key)
      # If you pass in something that is not true boolean value then use that as a method name
      # to call on the presenter.
      return presenter.send(key)    if method.is_a?(TrueClass)
      return presenter.send(method) if method.to_s.length.positive?

      # User for/through
      model_key = self.for || key
      model = presenter.obj

      Array(through).each do |association|
        model = model.respond_to?(association) ? model.send(association) : nil

        break unless model
      end

      model&.respond_to?(model_key) ? model.send(model_key) : nil
    end
def resolve_value(presenter, key)
      # If you pass in something that is not true boolean value then use that as a method name
      # to call on the presenter.
      return presenter.send(key)    if method.is_a?(TrueClass)
      return presenter.send(method) if method.to_s.length.positive?

      # User for/through
      model_key = self.for || key
      model = presenter.obj

      Array(through).each do |association|
        model = model.respond_to?(association) ? model.send(association) : nil

        break unless model
      end

      model&.respond_to?(model_key) ? model.send(model_key) : nil
    end
(method) and (for/through) are mutually exlusive use-cases.
 Example: you would never use for and method.