0

我正在尝试运行一个非常快速的更新查询来记录用户的电子邮件地址已确认(在我的用户表中将已确认的 [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 中收到以下错误:

没有找到与命名参数的调用匹配的方法/函数 [更新]

...突出显示user.update(confirmed=1); 我的代码中的行。那么我做错了什么?以前我一直使用 save/update(params.user) 或类似的方法来进行这些查询,但这似乎有点过头了;我只想通过 1 位更新。

4

1 回答 1

2

好的,我的 CTO 是 CFML 和 Wheels 的新手,他在 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>
于 2012-07-14T01:30:57.727 回答