Module: DataMapper::Validate

Public Visibility

Public Instance Method Summary

#all_valid?(context = :default)

Begin a recursive walk of the model checking validity.

#errors

Return the ValidationErrors.

#recursive_valid?(target, context, state)

Do recursive validity checking.

#save(context = :default)

Validate the resource before saving.

#valid?(context = :default)

Check if a resource is valid in a given context.

#valid_for_default?

Alias for valid?(:default).

#validatable?()

Mark this resource as validatable.

#validation_association_keys(name)
#validation_property_value(name)

Public Instance Method Details

all_valid?

public all_valid?(context = :default)

Begin a recursive walk of the model checking validity

[View source]


66
67
68
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 66

def all_valid?(context = :default)
  recursive_valid?(self,context,true)
end

errors

public errors

Return the ValidationErrors

[View source]


40
41
42
43
44
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 40

def errors


  @errors ||= ValidationErrors.new
end

recursive_valid?

public recursive_valid?(target, context, state)

Do recursive validity checking

[View source]


72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 72

def recursive_valid?(target, context, state)
  valid = state
  target.instance_variables.each do |ivar|
    ivar_value = target.instance_variable_get(ivar)
    if ivar_value.validatable?



      valid = valid && recursive_valid?(ivar_value,context,valid)
    elsif ivar_value.respond_to?(:each)
      ivar_value.each do |item|
        if item.validatable?



          valid = valid && recursive_valid?(item,context,valid)
        end
      end
    end
  end
  return valid && target.valid?
end

save

public save(context = :default)

Validate the resource before saving

[View source]


33
34
35
36
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 33

def save(context = :default)
  return false unless valid?(context)
  super()
end

valid?

public valid?(context = :default)

Check if a resource is valid in a given context

[View source]


60
61
62
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 60

def valid?(context = :default)
  self.class.validators.execute(context,self)
end

valid_for_default?

public valid_for_default?

Alias for valid?(:default)

[View source]


54
55
56
57
58
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 54

def valid_for_default?


  valid?(:default)
end

validatable?

public validatable?()

Mark this resource as validatable. When we validate associations of a resource we can check if they respond to validatable? before trying to recursivly validate them

[View source]


48
49
50
51
52
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 48

def validatable?()


  true
end

validation_association_keys

public validation_association_keys(name)
[View source]


96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 96

def validation_association_keys(name)
  if self.class.relationships.has_key?(name)



    result = []
    relation = self.class.relationships[name]
    relation.child_key.each do |key|
      result << key.name
    end
    return result
  end
  nil
end

validation_property_value

public validation_property_value(name)
[View source]


90
91
92
93
94
# File 'dm-more/dm-validations/lib/dm-validations.rb', line 90

def validation_property_value(name)
  return self.instance_variable_get("@#{name}") if self.instance_variables.include?(name)
  return self.send(name) if self.respond_to?(name)
  nil
end