2016-08-31 5 views
0

複数のActiveRecordモデルで.findを呼び出すコントローラがあります。私はレコードが見つからないときに発生したエラーを捕捉するためにrescue_fromメソッドを使用しています。しかし、私は見つからないレコードの種類を見つけることができません。だから私のコントローラは、このようになりますとしますActiveRecordNotFoundが発生したときにモデルが見つかりません

class AccountController < ApplicationController 

    rescue_from ActiveRecord::RecordNotFound, :with => :handler 

    def find_user 
    User.find(params[:user_id]) 
    end 

    def find_post 
    Post.find(params[:post_id]) 
    end 

    def handler 
    flash[:error] = "{model} not found" 
    end 
end 

問題は、私は見つかりませんでしたレコードのユーザー、上記のコードでは、私{モデル}希望を伝える必要があります。これを行うためのきれいな方法がありますか?

答えて

0

あなたは、単にこの

post = Post.find_by id: params[:post_id] 
flash[:error] = "Post not found" unless post 

のようにそれを扱うことができるか、rescue_from

rescue_from ActiveRecord::RecordNotFound do |error| 
    # do something with error to recognize the model 
end 
にブロックを渡すことができます
関連する問題