Method: FlowCore::Violations#add

Defined in:
lib/flow_core/violations.rb

#add(record, message = :invalid, options = {}) ⇒ Object



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/flow_core/violations.rb', line 122

def add(record, message = :invalid, options = {})
  message = message.call if message.respond_to?(:call)
  detail  = normalize_detail(message, options)
  message = normalize_message(record, message, options)
  n_record = normalize_record(record)

  record_key = "#{record.class}/#{record.id}"
  details[record_key] << detail
  messages[record_key] << message
  records[record_key] = n_record

  if exception = options[:strict]
    exception = FlowCore::StrictViolationFailed if exception == true
    raise exception, full_message(record_key, message)
  end
end