Paginate lanza de error para las validaciones personalizadas
-
26-09-2019 - |
Pregunta
Estoy intentando crear una validación personalizada para uno de mis modelos en Rails 2.3.5, pero no dejo de recibir el siguiente error cada corro mi suite de pruebas:
`method_missing_without_paginate': undefined local variable or method `validates_progression'
app / modelos / project.rb
class Project < ActiveRecord::Base
...
validates_progression
def validates_progression
true # stubtastic!
end
end
Me parece que no puede hacer gran parte de esta ~
Solución
No funciona porque está definiendo un método de instancia alcance y que está intentando llamar dentro del ámbito de la clase. Tiene dos alternativas:
Instancia Alcance
class Project < ActiveRecord::Base
validate :validates_progression
def validates_progression
true # stub
end
end
ámbito de clase
class Project < ActiveRecord::Base
def self.validates_progression
true # stub
end
# Be sure to define this method before calling it
validates_progression
end
La segunda alternativa realmente no tiene sentido a menos que desee para envolver otro filtro.
class Project < ActiveRecord::Base
def self.validates_progression
validates_presence_of :progression
validates_length_of ...
end
# Be sure to define this method before calling it
validates_progression
end
De lo contrario, ir con la primera solución.
Otros consejos
La referencia de paginación es una pista falsa. La clave es el 'sin'. La gema paginará ha alias el método method_missing
existente y lo llamó method_missing_without_pagination
. Por lo tanto, el problema es un error estándar método faltante.
El método no se encuentra, ya que es a) no se define cuando se llama a ella y b) no en el ámbito correcto (que está intentando llamar a un método de instancia en el ámbito de la clase).
Se puede añadir su validación personalizada mediante el uso de validate
con el símbolo para el método de validación:
validate :validates_progression
def validates_progression
true
end