2016-11-18 2 views
1

У меня есть собственный класс в приложении Rails, который проверяет кучу настроек.Rails redirect_to внутри пользовательского класса

Код:

class UserSettingObject < RailsSettings::SettingObject 
    validate do 
    if !/^([0-9]|0[0-9]|1[0]):[0-5][0-9]$/.match(self.time) 
     redirect_to settings_path, notice: 'Invalid time format' 
    end 
    end 
end 

проверить SO сообщения и нашел подобную проблему (here), рекомендация была include ActionController::Redirecting, но она не работает, что приводит к непредсказуемому `ошибки метода config_accessor».

Как использовать методы перенаправления Rails в пользовательском классе?

ответ

4

В дополнение к тому, что уже сказал @SergioTulentsev, валидации предназначены для проверки, а не для принятия мер. Вместо этого вы можете оставить regexp как метод, а в контроллере - time, используя его и перенаправляя на основе результата проверки.

+1

haha, взаимные кредиты :) –

+0

@SergioTulentsev Я только что понял, что вы на самом деле ответили на вопрос, в то время как я предложил альтернативу чему-то, что не работает :) Upvoted –

4

Короткий ответ: вы не можете этого сделать.

redirect_to имеет смысл только в контексте запроса (чтение: при вызове из действия контроллера). Вы не можете перенаправлять из случайных объектов, потому что они не знают, к какому запросу манипулировать.

И да, что говорит @AndreyDeineko.