2011-09-03 10:00:23 +00:00
|
|
|
module SimpleForm
|
|
|
|
module Helpers
|
|
|
|
module Required
|
|
|
|
private
|
|
|
|
|
2011-12-04 12:00:39 +00:00
|
|
|
def required_field?
|
2011-09-03 10:00:23 +00:00
|
|
|
@required
|
|
|
|
end
|
|
|
|
|
|
|
|
def calculate_required
|
|
|
|
if !options[:required].nil?
|
|
|
|
options[:required]
|
|
|
|
elsif has_validators?
|
2012-02-09 20:48:17 +00:00
|
|
|
required_by_validators?
|
2011-09-03 10:00:23 +00:00
|
|
|
else
|
2011-12-04 12:00:39 +00:00
|
|
|
required_by_default?
|
2011-09-03 10:00:23 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-02-09 20:48:17 +00:00
|
|
|
def required_by_validators?
|
|
|
|
(attribute_validators + reflection_validators).any? { |v| v.kind == :presence && valid_validator?(v) }
|
|
|
|
end
|
|
|
|
|
2011-12-04 12:00:39 +00:00
|
|
|
def required_by_default?
|
2011-09-03 10:00:23 +00:00
|
|
|
SimpleForm.required_by_default
|
|
|
|
end
|
|
|
|
|
2011-12-04 12:00:39 +00:00
|
|
|
# Do not use has_required? because we want to add the class
|
2011-12-10 17:55:27 +00:00
|
|
|
# regardless of the required option.
|
2011-09-03 10:00:23 +00:00
|
|
|
def required_class
|
2011-12-04 12:00:39 +00:00
|
|
|
required_field? ? :required : :optional
|
2011-09-03 10:00:23 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2011-12-10 17:55:27 +00:00
|
|
|
end
|