Search for validations on both association and attribute (association_id) when testing for attribute required
This commit is contained in:
parent
ff77beefe0
commit
ed261854da
|
@ -56,12 +56,20 @@ module SimpleForm
|
|||
if options.key?(:required)
|
||||
options[:required]
|
||||
elsif object.class.respond_to?(:validators_on)
|
||||
object.class.validators_on(attribute_name).any? { |v| v.kind == :presence }
|
||||
(attribute_validators + reflection_validators).any? { |v| v.kind == :presence }
|
||||
else
|
||||
attribute_required_by_default?
|
||||
end
|
||||
end
|
||||
|
||||
def attribute_validators
|
||||
object.class.validators_on(attribute_name)
|
||||
end
|
||||
|
||||
def reflection_validators
|
||||
reflection ? object.class.validators_on(reflection.name) : []
|
||||
end
|
||||
|
||||
def attribute_required_by_default?
|
||||
SimpleForm.required_by_default
|
||||
end
|
||||
|
|
|
@ -429,6 +429,13 @@ class FormBuilderTest < ActionView::TestCase
|
|||
assert_equal 3, calls
|
||||
end
|
||||
|
||||
test 'builder association mark input as required based both association and attribute' do
|
||||
swap SimpleForm, :required_by_default => false do
|
||||
with_association_for @validating_user, :company, :collection => []
|
||||
assert_select 'label.required'
|
||||
end
|
||||
end
|
||||
|
||||
# ASSOCIATIONS - BELONGS TO
|
||||
test 'builder creates a select for belongs_to associations' do
|
||||
with_association_for @user, :company
|
||||
|
|
|
@ -107,4 +107,5 @@ end
|
|||
class ValidatingUser < User
|
||||
include ActiveModel::Validations
|
||||
validates :name, :presence => true
|
||||
validates :company, :presence => true
|
||||
end
|
||||
|
|
|
@ -59,7 +59,8 @@ class ActionView::TestCase
|
|||
:id => 1,
|
||||
:name => 'New in Simple Form!',
|
||||
:description => 'Hello!',
|
||||
:created_at => Time.now
|
||||
:created_at => Time.now,
|
||||
:company => 1
|
||||
}.merge(options))
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue