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 に属性をレンダリングさせるにはどうすればよいですか?