Heroku, пользовательский поддомен и пользовательское ограничение

Прямой ответ заключается в том, чтобы спасти конкретное исключение, из которого вы хотите восстановить, а затем обработать его, как вы считаете нужным ... что-то вроде:

def create
  @boo = current_user.my_boos.new(boo_params)
  respond_to do |format|
    begin
      if @boo.save
        format.html { redirect_to root_path, notice: "Thanks!" }
        format.json { render :index, status: :created, location: @boo }
      else
        format.html { render :new }
        format.json { render json: @boo.errors, status: :unprocessable_entity }
      end
    rescue PG::UniqueViolation
      format.html { render :new }
      format.json { render json: ["We've already got one"], status: :unprocessable_entity }
    end
  end
end

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

Однако я бы предположил, что более «Railsy» решение должно определить валидацию уникальности в вашей модели, в дополнение к ограничению DB , поэтому он будет обрабатываться существующим if @boo.save условным.

1
задан Msencenb 20 January 2019 в 21:53
поделиться

1 ответ

Я согласен, кажется, что перенаправление происходит до того, как запрос попадает в ваше приложение Rails, что означает, что это либо Heroku, либо что-то до Heroku. У вас есть CDN перед вашим приложением Heroku?

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

❯ curl -I https://wrestlingiq.com      
HTTP/1.1 301 Moved Permanently
Server: Cowboy
Date: Sun, 20 Jan 2019 14:20:54 GMT
Connection: keep-alive
Cache-Control: max-age=3600
Content-Type: text/html
Location: https://www.wrestlingiq.com/
Content-Length: 215
Via: 1.1 vegur
0
ответ дан Adam McCrea 20 January 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: