No commit activity in last 3 years
No release in over 3 years
Intelligently applies a maxlength attribute for text fields based on column constraints and validations
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

smart_field_constraints ¶ ↑

smart_field_constraints intelligently applies a maxlength attribute for text fields based on column constraints and validations.

Resources¶ ↑

API

Bugs

Development

Testing

Source

  • git://github.com/pluginaweek/smart_field_constraints.git

Mailing List

Description¶ ↑

HTML input field restrictions within forms can often help with both validation and improving the user experience. Normally, adding the maxlength configuration option for input fields is not DRY and duplicates data already available in the model or database. This plugin helps make this automatic.

smart_field_constraints looks in two places for determining the maxlength value for an input field:

  • Model validates_length_of/validates_size_of validations

  • Database column definitions (limits specifically)

Model validations will always take preference over database column definitions.

Usage¶ ↑

There’s nothing that you need to change to be able to use this plugin. It’ll just start automatically adding the maxlength values it finds based on the information described above (unless you define that option yourself).

Example¶ ↑

Model:

class User < ActiveRecord::Base
  validates_length_of :login, :maximum => 12
end

View:

text_field(:user, :login)

HTML:

<input id="user_login" maxlength="12" name="user[login]" size="30" type="text" />

Textarea maxlengths¶ ↑

Since the maxlength attribute is not W3C-compliant for textareas, it is not included in the types of fields that will be automatically assigned length constraints. However, you can easily add this yourself by extending the plugin yourself. For an example of this see smart_field_constraints_textarea.

Caveats¶ ↑

Plugin load order¶ ↑

If you have plugins with models that are loaded before smart_field_constraints is loaded, then any length validations defined in those models will not be tracked and automatically used in form fields. To fix this, you can adjust your application’s plugin load order to ensure that smart_field_constraints is loaded first:

config/environment.rb:

Rails::Initializer.run do |config|
  ...
  config.plugins = [:smart_field_constraints, :all]
  ...
end

Testing¶ ↑

Before you can run any tests, the following gem must be installed:

To run against a specific version of Rails:

rake test RAILS_FRAMEWORK_ROOT=/path/to/rails

Dependencies¶ ↑

  • Rails 2.0 or later