0

RESTful User モデルがあり、検索されている User オブジェクトが現在のユーザーではない場合に、Show JSON 応答に含まれる属性をフィルター処理しようとしています。

論理:

if params[:id]==current_user
  json => {:name: <name value>, :birthdate: <birthdate>}
else
  json => {:name: <name value>}
end

コントローラーで属性をフィルタリングすると、次のコードで MissingAttribiteError が返されます。

ユーザーコントローラー

def show
  if params[:id]==current_user.id.to_s
    @user=User.find(params[:id])
  else
    @user=User.find(params[:id], :select => [:name])
  end
  respond_with(@user)
end

users/show.json.rabl

object @user
attributes :name, :birthdate

オブジェクトに存在する場合にのみ、RABL に属性をレンダリングさせるにはどうすればよいですか?

4

1 に答える 1

0

どうやら簡単なことは簡単なはずです。これは機能します。

[ただし、ビューレベルでのフィルタリングが、コントローラーでのフィルタリングよりも優れているか悪いかはわかりません。]

UsersController

def show
    @user=User.find(params[:id])
    respond_with(@user)
end

users / show.json.rabl

if @user==current_user
  attributes :birthdate
end
于 2012-06-05T03:15:56.020 に答える