我正在尝试运行一个非常快速的更新查询来记录用户的电子邮件地址已确认(在点击通过电子邮件发送的链接后,将我的users表中的已确认[bit]列设置为1)。这是应该采取的行动:
<cffunction name="confirmEmail">
<cfscript>
user = model("user").findOne(where="id=#params.userid# AND uuid='#params.uuid#'", returnAs="query");
if(user.recordCount) {
pageTitle = "E-mail Confirmation Success";
user.update(confirmed=1);
} else {
redirectTo(route="authenticationDenied", alert="Something was wrong with your confirmation string. Please contact site administrators.");
}
</cfscript>
</cffunction>
但是当我提交相应的URL(我已经转储并且可以看到模型调用找到一个有效记录)时,我在Railo 3.3.x中收到以下错误:
找不到具有命名参数的调用的匹配方法/函数[update]
...在我的代码中突出显示 user.update(已确认= 1); 行。那么我做错了什么?以前我总是使用save / update(params.user)或者左右来查看这些查询,但这似乎有点过分了;我只想传递1位更新。
答案 0 :(得分:2)
好吧,我的CFO和Wheels新手CTO在5秒钟内就发现了这一点。因此我猜“C”。
通过将用户模型作为查询而不是对象返回,我无法访问update / save()方法。 (Duh,MVC n00b。)我将它作为查询返回的原因很简单,我一直在做这一点,以便轻松操作输出,在这种情况下,我可以测试是否存在记录我一直以来的方式(如果是recordCount)。但这有效......
<cffunction name="confirmEmail">
<cfscript>
user = model("user").findOne(where="id=#params.userid# AND uuid='#params.uuid#'");
if(isObject(user)) {
user.update(confirmed="1");
} else {
flashInsert(error="Something was wrong with your confirmation string. Please contact site administrators.");
redirectTo(route="authenticationDenied");
}
</cfscript>
</cffunction>