Module: Acfs::Resource::Validation

Included in:
Acfs::Resource
Defined in:
lib/acfs/resource/validation.rb

Instance Method Summary collapse

Instance Method Details

#remote_errorsObject



5
6
7
# File 'lib/acfs/resource/validation.rb', line 5

def remote_errors
  @remote_errors ||= ActiveModel::Errors.new self
end

#remote_errors=(errors) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/acfs/resource/validation.rb', line 9

def remote_errors=(errors)
  if errors.respond_to?(:each_pair)
    errors.each_pair do |field, errs|
      Array(errs).each do |err|
        self.errors.add field.to_sym, err
        remote_errors.add field.to_sym, err
      end
    end
  else
    Array(errors).each do |err|
      self.errors.add :base, err
      remote_errors.add :base, err
    end
  end
end

#save!(**kwargs) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/acfs/resource/validation.rb', line 25

def save!(**kwargs)
  unless valid?(new? ? :create : :save)
    raise ::Acfs::InvalidResource.new resource: self, errors: errors.to_a
  end

  super
end

#valid?(*args) ⇒ Boolean

Returns:



34
35
36
37
38
39
# File 'lib/acfs/resource/validation.rb', line 34

def valid?(*args)
  super

  remote_errors.each {|e| errors.add(e.attribute, e.message) }
  errors.empty?
end