custom error validations
This commit is contained in:
38
app/validators/answer_format_validator.rb
Normal file
38
app/validators/answer_format_validator.rb
Normal file
@ -0,0 +1,38 @@
|
||||
class AnswerFormatValidator < ActiveModel::EachValidator
|
||||
def validate_each(record, attribute, value)
|
||||
send(record.question.input_type, record, attribute, value)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def text record, attribute, value
|
||||
return unless value.length.between? 1, 1000
|
||||
|
||||
if value.blank?
|
||||
record.errors[attribute] << (options[:message] || "Please enter an answer.")
|
||||
end
|
||||
|
||||
if value.length > 1000
|
||||
record.errors[attribute] << (options[:message] || "The character limit for a textarea answer is 1000")
|
||||
end
|
||||
end
|
||||
|
||||
def radio record, attribute, value
|
||||
return unless value.nil?
|
||||
|
||||
record.errors[attribute] << (options[:message] || "Please select an answer.")
|
||||
end
|
||||
|
||||
def checkbox record, attribute, value
|
||||
return unless value.nil? || value.join.blank?
|
||||
|
||||
record.errors[attribute] << (options[:message] || "Please select an answer.")
|
||||
end
|
||||
|
||||
def live_code record, attribute, value
|
||||
return unless value.nil?
|
||||
|
||||
msg = "You must write code in one of the above textareas to progress."
|
||||
record.errors[attribute] << (options[:message] || msg)
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user