Я работаю над приложением Grails и пытаюсь связать ShiroUser с профилем пользователя.У меня есть две модели под названием ShiroUser и UserProfile.В моем ShiroUser:
class ShiroUser {
... ...
static hasOne = [profile: UserProfile]
static constraints = {
email(nullable: false, blank: false, unique: true)
profile(nullable: false)
}
}
И в моем UserProfile.groovy у меня есть:
class UserProfile {
... ...
static belongsTo = [shiroUser:ShiroUser]
}
Однако в моем ShiroUserController.groovy, когда я пытаюсь создать новый экземпляр ShiroUser,это не так хорошо работает.Вот мой код:
def create() {
[shiroUserInstance: new ShiroUser(params), userProfileInstance: new UserProfile()]
}
def save() {
//todo add validation for email and password here.
def shiroUserInstance = new ShiroUser(params)
// Create a user profile
def userProfileInstance = new UserProfile()
shiroUserInstance.profile.email = params.email
shiroUserInstance.profile.firstName = params.firstName
shiroUserInstance.profile.lastName = params.lastName
if (!userProfileInstance.save(flush: true)){
render(view: "create", model: [userProfileInstance: userProfileInstance])
return
}
shiroUserInstance.profile = userProfileInstance
if (!shiroUserInstance.save(flush: true)) {
render(view: "create", model: [shiroUserInstance: shiroUserInstance])
return
}
flash.message = message(code: 'default.created.message', args: [message(code: 'shiroUser.label', default: 'ShiroUser'), shiroUserInstance.id])
redirect(action: "show", id: shiroUserInstance.id)
}
Когда я захожу в свое приложение и пытаюсь создать новый ShiroUser, объект не может быть сохранен.Я обновил схему перед запуском приложения, чтобы не было проблем с миграцией.Есть мысли?