ruby-on-rails - validations - rails validates if
¿Rails pone la validación en un módulo mixin? (2)
Tu módulo debería verse más o menos así:
module CommonValidations
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
Entonces en tu modelo:
class Post < ActiveRecord::Base
include CommonValidations
...
end
Estoy usando ActiveSupport::Concern aquí para hacer que el código sea un poco más claro.
Algunas validaciones son repetitivas en mis modelos:
validates :name, :length => { :minimum => 2 }, :presence => true, :uniqueness => true
validates :name_seo, :length => { :minimum => 2 }, :presence => true, :uniqueness => true
¿Cómo pondría eso en un mixin? Me sale este error si los puse en una mezcla
app/models/validations.rb:5: undefined method `validates'' for Validations:Module (NoMethodError)
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
La macro validates
debe evaluarse en el contexto del incluido, no del módulo (como probablemente lo estaba haciendo).