Paginate выдает ошибку для пользовательских проверок - PullRequest
1 голос
/ 30 сентября 2010

Я пытаюсь создать пользовательскую проверку для одной из моих моделей в Rails 2.3.5, но я продолжаю получать следующую ошибку каждый раз, когда запускаю свой набор тестирования:

`method_missing_without_paginate': undefined local variable or method `validates_progression'

приложение / модели / project.rb

class Project < ActiveRecord::Base
   ...
   validates_progression

   def validates_progression
      true # stubtastic!
   end
end

Кажется, я не могу многое из этого сделать ~

Ответы [ 2 ]

1 голос
/ 30 сентября 2010

Ссылка на пагинацию - красная сельдь.Ключом является «без».Драгоценный камень воли разбил псевдоним существующего метода method_missing и назвал его method_missing_without_pagination.Таким образом, проблема заключается в стандартной ошибке отсутствующего метода.

Метод отсутствует, поскольку он а) не определен при его вызове и б) не в правильной области (вы пытаетесь вызвать метод экземпляра всфера занятий).

Вы можете добавить свою пользовательскую проверку, используя validate с символом для вашего метода проверки:

validate :validates_progression

def validates_progression
  true
end
1 голос
/ 30 сентября 2010

Это не работает, потому что вы определяете метод с помощью экземпляра scope и пытаетесь вызвать его в рамках класса.У вас есть две альтернативы:

Область экземпляра

class Project < ActiveRecord::Base

  validate :validates_progression

  def validates_progression
     true # stub
  end

end

Область действия класса

class Project < ActiveRecord::Base

  def self.validates_progression
     true # stub
  end

  # Be sure to define this method before calling  it
  validates_progression

end

Вторая альтернатива неЭто действительно имеет смысл, если вы не хотите обернуть другой фильтр.

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

В противном случае перейдите к первому решению.

...