Методы update() и save() не приводят к совпадению метода/функции в railo

Я пытаюсь выполнить очень быстрый запрос на обновление, чтобы записать, что адрес электронной почты пользователя подтвержден (устанавливая столбец подтвержденного [бита] в моей таблице пользователей на 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-битное обновление.


person Brian D    schedule 13.07.2012    source источник
comment
Я решил это, но, поскольку я здесь новичок, я не могу опубликовать ответ на свой вопрос в течение 8 часов. Я вернусь.   -  person Brian D    schedule 13.07.2012


Ответы (1)


Хорошо, мой технический директор, который плохо знаком с CFML и Wheels, понял это примерно за 5 секунд. Отсюда и буква "С", я думаю.

Возвращая пользовательскую модель в виде запроса вместо объекта, у меня не было доступа к методам 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>
person Brian D    schedule 14.07.2012