Rails put validation in a module mixin?

models, ruby, ruby-on-rails, validation

Solution

module Validations
  extend ActiveSupport::Concern

  included do
    validates :name, :length => { :minimum => 2 }, :presence => true, :uniqueness => true
    validates :name_seo, :length => { :minimum => 2 }, :presence => true, :uniqueness => true
  end
end

The `validates` macro must be evaluated in the context of the includer, not of the module (like you probably were doing).

Problem

Some validations are repetitive in my models: ``` validates :name, :length => { :minimum => 2 }, :presence => true, :uniqueness => true validates :name_seo, :length => { :minimum => 2 }, :presence => true, :uniqueness => true ``` How would I put that in a mixin? I get this error if I just put 'em in a mixin ``` app/models/validations.rb:5: undefined method `validates' for Validations:Module (NoMethodError) ```

Original source