Оценка класса Ruby, validates_inclusion_of с динамическими данными

Если у меня есть модель ActiveRecord, как показано ниже

class Foo < ActiveRecord::Base
  validates_inclusion_of :value, :in => self.allowed_types

  def self.allowed_types
    # some code that returns an enumerable
  end
end

Это не работает, потому что метод allowed_types не был определен в то время, когда оценивается проверка. Все исправления, которые я могу придумать, в основном связаны с перемещением определения метода над проверкой, чтобы оно было доступно при необходимости.

Я понимаю, что это может быть больше вопрос стиля кодирования, чем что-либо еще (я хочу, чтобы все мои проверки были на вверху модели и методы внизу), но я чувствую, что должно быть какое-то решение для этого, возможно, связанное с ленивой оценкой начальной загрузки модели?

возможно ли то, что я хочу сделать? Должен ли я просто определять метод над проверкой или есть лучшее решение для проверки, чтобы добиться того, что я хочу.

6
задан eightbitraptor 18 August 2011 в 10:19
поделиться