0

ユーザーの電子メールアドレスが確認されたことを記録するために、非常に簡単な更新クエリを実行しようとしています (電子メールで送信されたリンクをクリックした後、users テーブルの確認済みの [ビット] 列を 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 を送信すると (ダンプしたところ、モデル呼び出しで有効なレコードが 1 つ見つかったことがわかります)、Railo 3.3.x で次のエラーが発生します。

名前付き引数を持つ呼び出しに一致するメソッド/関数 [更新] が見つかりません

... user.update(confirmed=1);を強調表示します。私のコードの行。それで、私は何を間違っていますか?以前は、これらのクエリに常に save/update(params.user) などを使用していましたが、ここではやり過ぎのようです。1ビットの更新を渡したいだけです。

4

1 に答える 1

2

さて、CFML と Wheels に不慣れな私の CTO は、5 秒ほどでこれを理解しました。したがって、「C」だと思います。

ユーザー モデルをオブジェクトではなくクエリとして返すことで、update/save() メソッドにアクセスできなくなりました。(まあ、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 に答える