0

Rails 3.2.11 を使用しています。モデル内の特定の属性が設定されていない場合に無効にしたいアクション (表示) があります。今、私はアクションでこれを直接扱っています:

def show
    @model = Model.find(params[:id])
    if !@model.attribute
        raise ActionController::RoutingError.new('Something bad happened')
    end
end

これは受け入れられますか、それともこの状況を処理するためのより良い方法はありますか? ユーザーが存在しないレコードにアクセスしようとしたときと同じ動作にしたいと思います。

4

2 に答える 2

0

そのロジックをbefore_filterで使用することを好むため、 show アクションはクリーンになります。

before_filter :check_attribute

...

def show
  # you can use straight @model here

end
...

private

def check_attribute
  @model = Model.find(params[:id])
  if !@model.attribute
    raise ActionController::RoutingError.new('Something bad happened')
  end
end

このようにして、他のアクションにも使用できます。

于 2013-02-24T22:39:24.583 に答える
-1

はい、これは許容範囲です。私は個人的に条件付きでワンライナーとして書きます。

raise ActionController::RoutingError.new('Something bad happened') unless @model.attribute?

:not_found応答を処理するための代替方法の良いリソースは、この質問です。

于 2013-02-24T21:43:49.167 に答える