0

我有一个 RESTful 用户模型,并且当正在寻找的用户对象不是当前用户时,我试图过滤要包含在显示 JSON 响应中的属性。

逻辑:

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

当我在控制器中过滤属性时,我得到一个 MissingAttribuiteError 并带有以下代码:

用户控制器

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

用户/show.json.rabl

object @user
attributes :name, :birthdate

仅当对象中存在属性时,如何才能使 RABL 呈现属性?

4

1 回答 1

0

显然容易的事情应该很容易。这行得通。

[但不确定视图级别的过滤是否比控制器中的过滤更好或更差。]

用户控制器

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

用户/show.json.rabl

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