В проекте Rails 3.1 у меня есть класс модели с пользовательским валидатором:
class Car < ActiveRecord::Base
validate :road_must_exist_nearby, :on => :create
# ...
def not_a_validator_method
Road.exists_nearby?
end
def road_must_exist_nearby
if !Road.exists_nearby?
# ...
end
end
end
Когда я пытаюсь сохранить свой экземпляр автомобиля ...
> car = Car.new
> car.save
Я получаю следующую ошибку:
NameError: uninitialized constant Car::Road
Почему вызов Road.exists_nearby?
из обычного метода экземпляра работает?:
> car.not_a_validator_method
=> true
И почему вызов его из метода валидатора вызывает ошибку, как если бы Rails полагал, что Road
следует вызывать через Car
?:
> car.road_must_exist_nearby
NameError: uninitialized constant Car::Road
А как я могу заставить метод валидатора работать?