У меня есть контроллер с несколькими действиями, которые выполняют: год и: месяц как
атрибуты из URL. Я сделал приватный метод check_date для
проверьте, что дата действительна, и проверьте, что дата не в будущем.
def check_date(year, month)
if month < 1 || month > 12 || year < 2000
flash[:notice] = I18n.t 'archive.invalid_date'
redirect_to :action => 'index'
elsif year > Date.today.year || (year == Date.today.year && month > Date.today.month)
flash[:notice] = I18n.t 'archive.no_future'
redirect_to :action => 'month_index',
:year => Date.today.year,
:month => Date.today.month,
:type => params[:type]
end
end
Есть ли рельсовый способ завершения выполнения контроллера после
redirect_to?
Способы, которые я могу придумать, это либо генерировать исключение после redirect_to, либо возвращать значение из check_date и проверять его в каждом вызывающем его действии - что-то вроде
def month_index
year = params[:year].to_i
month = params[:month].to_i
if !check_date(year, month)
return
...
end
Но мне интересно, есть ли хороший способ сделать это? Я был наполовину
надеясь, что вызвав redirect_to rails узнает, я хотел
остановись, но этого, похоже, не происходит.