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 ~

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top