2012-06-05 85 views
0

我有一個RESTful用戶模型,並試圖篩選顯示JSON響應中包含的屬性,當用戶對象被尋找不是當前用戶時。如何使RABL僅在物體中存在屬性時才呈現屬性?

邏輯:

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只在物體中存在屬性時才呈現屬性?

回答

0

顯然容易的事情應該很容易。這工作。

[不知道是否在視圖級別過濾比在控制器過濾更好或更差,雖然。]

UsersController

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

用戶/ show.json.rabl

if @user==current_user 
    attributes :birthdate 
end