如果RABL仅在对象中存在时才能使其呈现属性?

时间:2012-06-05 00:46:04

标签: ruby-on-rails ruby-on-rails-3.1 rabl

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

逻辑:

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

当我在控制器中过滤属性时,我得到一个MissingAttribuiteError,其中包含以下代码:

UsersController

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仅在对象中存在属性时才能使其呈现?

1 个答案:

答案 0 :(得分:0)

显然容易的事情应该很容易。这很有效。

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

UsersController

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

用户/ show.json.rabl

if @user==current_user
  attributes :birthdate
end