Module: SetAttributes::Assign

Defined in:
lib/set_attributes/assign.rb

Defined Under Namespace

Classes: Error

Class Method Summary collapse

Class Method Details

.call(receiver, attribute, value, strict: nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 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