validator validations validates_presence_of validates rails method greater_than custom create ruby-on-rails ruby validation models

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).