我在理解“参数”函数中遇到了一些麻烦。类型转换参数散列值
我们假设我有用户模型。 用户控制器中的下一个代码描述符,它的功能是处理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