<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/vendor/validation_reflection.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -60,6 +60,12 @@ And if the field's value is invalid:
 See Mr Budd's good book for discussion of the HTML and the CSS to go with it.
 
 
+Required fields
+===============
+
+Thanks to Bill, the form builder automatically detects required fields (by looking for :validates_presence_of in the model) and marks them up appropriately.
+
+
 Configuration
 =============
 </diff>
      <filename>README.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,5 @@
+require 'vendor/validation_reflection'
+
 ActionView::Base.field_error_proc = Proc.new { |html_tag, instance| html_tag }
 
 ActionView::Base.send :include, AirBlade::AirBudd::FormHelper</diff>
      <filename>init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -320,7 +320,7 @@ module AirBlade
         text = options.delete(:label) || field.to_s.humanize
         suffix = options.delete(:suffix) || label_suffix
         value = text + suffix
-        if (required = options.delete(:required))
+        if (required = mandatory?(field, options.delete(:required)))
           required = required_signifier if required == true
           value += &quot; &lt;em class='required'&gt;#{required}&lt;/em&gt;&quot;
         end
@@ -338,6 +338,14 @@ module AirBlade
         @template.content_tag :label, value, html_options
       end
 
+      def mandatory?(method, override = nil)
+        return override unless override.nil?
+        # Leverage vendor/validation_reflection.rb
+        if @object.class.respond_to? :reflect_on_validations_for
+          @object.class.reflect_on_validations_for(method).any? { |v| v.macro == :validates_presence_of }
+        end
+      end
+
       # Writes out a &lt;span/&gt; element with a hint for how to fill in a field.
       # Options:
       #  - :hint: text for the hint.  Optional.</diff>
      <filename>lib/air_blade/air_budd/form_builder.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d3b07eecc72a78423726debdbb12b37c674e268b</id>
    </parent>
  </parents>
  <author>
    <name>Andy Stewart</name>
    <email>boss@airbladesoftware.com</email>
  </author>
  <url>http://github.com/airblade/air_budd_form_builder/commit/09a65291a0026697f87ca38325a44ba341dacb0e</url>
  <id>09a65291a0026697f87ca38325a44ba341dacb0e</id>
  <committed-date>2008-10-06T05:17:31-07:00</committed-date>
  <authored-date>2008-10-06T05:17:31-07:00</authored-date>
  <message>Added automatic detection of mandatory fields by borrowing Dan Webb's
enhanced_form_builder's hook to Michael Schuerig's ValidationReflection
module.  Thanks to Bill.</message>
  <tree>779bd39b3d5feba121170aa61bfacc5d9a0706a6</tree>
  <committer>
    <name>Andy Stewart</name>
    <email>boss@airbladesoftware.com</email>
  </committer>
</commit>
