40195
GET引数が仕様通りではない→クラック開始だ→即拒否、  
を実現するため、  
phpでの

```

    header('HTTP/1.1 500 Internal Server Error');
    exit;
    
```

と同様のことを、  
rails5.1のcontroller内で行おうとして、

```

    if @entry.blank?
      render text: "error"
      throw(:abort)
    end
    
```

と書いてみたのですが、意図通り即時終了になってくれません。  
rails5.1で実現可能でしょうか？

  * 2017-12-11追記   
（コメント欄だとコードブロックが使えず改行も効かない為、ソースコード載せるのが不可能でした）  
rails 5.1 の  
rails generate scaffold entry title:string body:integer  
が生成する app/controllers/entry_controller.rb は、以下のように、  
「EntriesController.set_entry で @entry を取得する」  
ようになっていまして、  
（それ以前のバージョンの動きはわかりません。rails入門してまだ一週間経ってないので...）  
そこで throw(:abort) しても効果が無い、という話でした。

app/controllers/entry_controller.rb

```

    class EntriesController < ApplicationController
      before_action :set_entry, only: [:show, :edit, :update, :destroy]
    
      # GET /entries/1
      def show
      end
    
      # GET /entries/new
      def new
        ...
      end
    
      # GET /entries/1/edit
      def edit
        ...
      end
    
      # POST /entries
      def create
        ...
      end
    
      # PATCH/PUT /entries/1
      def update
        ...
      end
    
        # DELETE /entries/1
      def destroy
        ...
      end
    
      private
        # Use callbacks to share common setup or constraints between actions.
        def set_entry
          @entry = Entry.find(params[:id])
        end
    
        # Never trust parameters from the scary internet, only allow the white list through.
        def entry_params
        ...
        end
    end
    
```
CC BY-SA 3.0
2017-12-08T23:07:52.667
40142
2017-12-11T14:50:39.420
2017-12-11T05:03:26.170
26568
26568
question
ruby-on-rails
rails5.1で、即時500エラー終了したい
```

    render text: 'error', status: 500
    
```

でどうでしょうか。
CC BY-SA 3.0
2017-12-09T03:57:54.240
40147
2017-12-09T03:57:54.240
9608
40142
answer
例外を投げれば 500 になりますので、以下のような感じでいかがでしょう?

```

    def set_entry
      @entry = Entry.find(params[:id])
      if @entry.blank?
        raise 'error'
      end
    end
    
```

`@entry.blank?` は真にはならないと思いますが、他の条件なら使えるのでは、と思います。
CC BY-SA 3.0
2017-12-11T14:50:39.420
40195
2017-12-11T14:50:39.420
5288
40142
answer