У меня есть действие создания контроллера, которое ищет один или несколько параметров в следующем наборе правил. Допустим, у нас есть два параметра, foo и bar. Правила следующие:
1) если foo не существует в списке параметров, бар должен.
2) если bar не существует в списке параметров, foo must.
3) они оба могут сосуществовать. они не могут быть оба опущены (это излишне с моими правилами выше :))
Может кто-нибудь показать пример в Rails о том, как это обрабатывается в контроллере? Должен ли я использовать before_filter? Был бы признателен за некоторые рекомендации, так как это не то, что ActiveRecord проверяет .. поэтому мне нужно построить сообщение об ошибке для пользователя непосредственно из логики контроллера, а не модели логики.
Для бонусных баллов я выводил ошибку в XML, так что если вы сможете показать, как это делается, это было бы здорово. Гипотетически давайте назовем ресурс «Lorem», поэтому он создается через http://foo/lorem.xml и у нас есть lorem_controller.rb.
Я пытаюсь что-то вроде этого, надеясь, что есть более чистый способ:
def create
logger.info("request bootstrap: #{params}")
if params[:foo].nil? && params[:bar].nil?
@errors = [] ||= << "Must include foo or bar."
respond_to do |format|
format.xml { render :layout => false,
:xml => @errors.to_xml }
end
end
end