module SetAttributes::Assign

Public Class Methods

call(receiver, attribute, value, strict: nil) click to toggle source
# File lib/set_attributes/assign.rb, line 5
def self.call(receiver, attribute, value, strict: nil)
  strict = true if strict.nil?

  setter = :"#{attribute}="

  if receiver.respond_to?(setter)
    receiver.send(setter, value)
  else
    if strict
      error_msg = "#{receiver} has no setter for #{attribute}"
      raise Error, error_msg
    end
  end

  value
end