我在理解「參數」函數中遇到了一些麻煩。類型轉換參數散列值
我們假設我有用戶模型。 用戶控制器中的下一個代碼描述符,它的功能是處理POST'destroy'請求。 「current_user」函數返回當前登錄的用戶(我建議用戶類的一個實例)。通過比較「CURRENT_USER == PARAMS [:ID]」「摧毀」功能檢查,如果用戶試圖刪除自己
def destroy
if current_user == params[:id]
flash[:error] = "you cannot delete yourself!"
else
User.find(params[:id]).destroy
flash[:success] = "user deleted"
end
redirect_to(users_path)
end
所以問題是,大塊的代碼效果很好。我不明白爲什麼。我的背景是3年大學C++/C#編程經驗,所以我推測這種比較應該會導致一些類型轉換。在這種情況下,我認爲這將是User obj ---> string obj(OR string - > User ??? !!!!)。 雖然我有很多關於Rails如何管理比較用戶類和字符串類的問題,但我可以讓自己適應這一點。
但是,如果我想優化這個任務並明確比較ID:一個以params [:id]存儲爲字符串(??),另一個存儲在current_user [「id」]散列中。
首先是字符串類型,第二是整數,我錯了嗎?因爲「current_user [」id「] == params [:id] .to_i」會導致錯誤,這意味着params [:id]返回User類的實例o_O
謝謝!
你能後的'current_user'方法的代碼?我不希望'current_user == params [:id]'返回true,所以我很驚訝這個代碼適合你。 – Brandan 2012-02-26 04:08:15
很難說出發生了什麼,因爲我不知道'current_user'或'params'的值是什麼。你可能想用'Rails.logger.debug(「params:#{params.inspect}」)''來檢查它們。可能會出現一些魔法(比如說一個對象等於它自己或者它的ID),但是我不希望一個'User'與一個整數相比,返回'true'。 – brymck 2012-02-26 04:39:34