Граальс: сохранить не работает - PullRequest
2 голосов
/ 01 февраля 2012

Я создал новый домен в Grails и с контроллера, который я пытался сохранить, но ничего не было сохранено в базе данных .. Код выглядит следующим образом

контроллер

     def register={
       String name = params.name
       String email = params.email
       String pass = params.password
       boolean signedIn = params.signedIn
       System.out.println(name + " " + email +" "+ pass+" " + signedIn)
       def rUser = new Registered(params)
      rUser.signedIn = signedIn

      System.out.println(rUser)
       rUser.save(flush:true)


   }

домен

    class Registered {
    String name;
    String email;
    String password;
    boolean signedIn =false;


    static constraints = {

    }
}

, и я пытаюсь сохранить этот URL

http://localhost:8080/egypths/apps/register?name=hegab&email=eio@gmail.com&password=tom&signedIn=false

так что жея делаю неправильно ... учитывая, что в трассировке стека нет ошибок

1 Ответ

2 голосов
/ 01 февраля 2012

Я бы начал с того, что обернул это в интеграционный тест, который выглядел бы так:

import groovy.util.GroovyTestCase
import org.junit.Test

public class RegisterControllerTests extends GroovyTestCase {

    @Test
    void saveAction() {
        def controller = new RegisterController() //or whatever the controller name is
        controller.params.name = "SomethingUnique"
        controller.params.email = "example@example.com"
        controller.params.password = "password"
        controller.params.signedIn = "false"

        controller.register()

        def registered = Registered.findByName("SomethingUnique")
        assert "example@example.com" == registered.email
        assert "password" == registered.password
        assert false == registered.signedIn
    }
}

Затем я бы начал с того, чтобы сделать действие вашего контроллера максимально простым:

def register={
    String name = params.name
    String email = params.email
    String pass = params.password
    boolean signedIn = params.signedIn
    def rUser = new Registered()
    rUser.name = name
    rUser.email = email
    rUser.password = pass
    rUser.signedIn = signedIn

    rUser.save(flush:true, failOnError:true)  //I would remove the failOnError after you identify the issue.
}

Таким образом, вы можете быстро повторить тест и выяснить, где ваша проблема.Добавление failOnError:true к вызову сохранения вызовет исключение, если оно не прошло проверку.Если этот простой пример работает, вернитесь к более элегантному решению, чтобы определить, где находится ваша проблема.

...