У меня есть два класса домена:Вставить объект Grails домена с внешним ключом
class User {
Client client
String firstName
String lastName
String email
String password
String address
String city
String state
String zip
String phone
Integer active
Date changedate
static belongsTo = [client : Client]
static constraints = {
firstName(nullable: false, blank:false)
lastName(nullable: false, blank:false)
email(nullable: false, blank: false)
address(nullable:false,blank:false)
city(nullable:false,blank:false)
state(nullable:false,blank:false)
zip(nullable:false,blank:false)
phone(nullable:false,blank:false)
active(nullable:false,blank:false)
changedate(nullable:false,blank:false)
}
}
class Client {
String name
String webaddress
String address
String city
String state
String zip
String phone
Integer active
Date changedate
static constraints = {
name(unique:true, nullable: false, blank:false)
address(nullable:false,blank:false)
city(nullable:false,blank:false)
state(nullable:false,blank:false)
zip(nullable:false,blank:false)
phone(nullable:false,blank:false)
active(nullable:false,blank:false)
changedate(nullable:false,blank:false)
}
}
Теперь две таблицы генерируются и внешний ключ существует с пользователем клиент. Я не могу для жизни, несмотря на то, что прочитал грабли, которые помогают документировать, как вставить запись пользователя с соответствующим клиентом. Это текущий код в моем контроллере. Клиент встает правильно, но не будет вставлять запись пользователя.
def register(){
Client newClient = new Client (
name: params.Company,
webaddress: params.WebAddress,
address: params.CompanyAddress,
city: params.CompanyCity,
state: params.CompanyState,
zip: params.CompanyZip,
phone: params.CompanyPhone,
active: 1,
changedate: new Date()
)
newClient.save()
User user = new User (
client: newClient,
firstName: params.FirstName,
lastName: params.LastName,
email: params.userName,
password: params.Password,
address: params.Address,
city: params.City,
state: params.State,
zip: params.Zip,
phone: params.Phone,
active: 1,
changedate: new Date()
)
user.save()
}
Код выглядит отлично. Вы не указали достаточно информации, чтобы точно сказать, но может быть, что проверка не выполняется при сохранении пользователя. Попробуйте 'user.save (failOnError: true)' или напечатать 'user.errors' после вызова' user.save() '. –
'params.userName' является подозреваемым. Обычным было бы для ваших имен параметров запроса начинать с строчной буквы, но поскольку все остальные начинаются с буквы в верхнем регистре, я подозрюю, что фактическое имя параметра может быть «UserName», в этом случае 'params.userName' будет оценивать значение null. Поскольку вы назначаете это свойство 'email', которое не является нулевым, если' params.userName' было null, что бы объяснить проблему. –
Eek, userName действительно имеет прописную букву U, а также пароль с буквой P. Иногда вы позволяете разочарованию в изучении нового языка заставляете забыть основы кодирования. Спасибо за помощь, ребята, пользователь был только что вставлен. Я чувствую себя глупо. – user1769667