2010-10-18 72 views
0

鑑於這些PARAMS:動態地生成上的一個對象,紅寶石一個屬性,導軌

例如:1

{:field => 'admin', :id => "1"} 

例如:2

{:field => 'client', :id => "1"} 

例如:3

{:field => 'partner', :id => "1"} 

是否有可能,(當然我怎麼能)動態盟友將此到User模型,如:

控制器

#note the field attribute is not a field 
#the field attribute I'm trying to set above to what are given in the params hash 

def update_user 
    field = params[:field] 
    @user = User.find(params[:id]) 
    @user.field = [email protected] 
    @user.save(false) 
    render :nothing => true 
end 

僅供參考

爲什麼不直接發送具有使用參數,並與update_attributes(params[:user])更新?因爲用戶屬性受到保護,並且以這種方式更新布爾值更容易。

+0

是'update_user '應該對局部變量'field'做任何事情? – BaroqueBobcat 2010-10-18 18:05:48

+0

「field」局部變量的意義在於動態生成需要更新的屬性 – s84 2010-10-18 18:13:34

+0

屬性是「admin」還是「client」,它們是在db還是隻是實例變量? – BaroqueBobcat 2010-10-18 18:17:02

回答

1

我會做這樣的事情:

@user = User.where("#{params[:field]} = ?", params[:id]).first if ["admin", "client", "partner"].include?(params[:field]) 

(其中「?包括」是一個安全檢查,以防止用戶選擇其他一些領域,你不希望他們)

+0

這很有趣。不完全是我想要的,但打開其他門。順便說一句,我試圖設置一個動態屬性沒有找到 – s84 2010-10-18 21:35:56