2014-04-26 2 views
0

나는이 개 관련 분야를 클래스라는 이름의 상인 (도메인 및 데이터베이스 모두에서 관련)과 같이 있습니다Grails의 컨트롤러의 필드 사이의 업데이 트를 계단식

/** 
*This class keeps information about a merchant 
*/ 
class Merchant{ 

... 

//The email of the merchant which is also 
//as the username property of the login field 
String email 
//The login credentials of the merchant 
UserLogin login 

... 

} 

userlogin에 클래스도 너무

다음과 같이 정의된다
/** 
*This class is used to hold the login credentials 
* of a Customer, Admin or "Merchant" 
*/ 
class UserLogin{ 

... 

//The username used to Login 
String username 
//The password used to Login 
String password 

... 

} 

이제는 새로운 판매자를 추가하는 동안 사용자 이름으로 이메일을 사용하여 판매자에 대한 로그인이 생성됩니다.

저는 동적 스캐 폴딩을 사용하고 있지만 상인에 대한 userLogin의 사용자 이름 필드를 업데이트하기위한 코드를 추가하려고합니다.

이제 Merchant의 이메일이 업데이트되면 로그인의 사용자 이름은 업데이트되지 않으며 일반적으로 사용자 이름을 사용하여 로그인 후 해당 판매자를 가져옵니다. 나는 이메일이 변경되는 경우, 또는 상인의 로그인 자격 증명 (사용자 이름)을 업데이트하는 작은 코드를 추가 할 수있는 방법

  • 는, 자신의 나는 상인의 이메일과 이름 사이의 데이터베이스 업데이트 폭포를 만들 수있는 방법이다 자신의 로그인의.의 판매자 도메인 클래스에서

답변

1

당신이 업데이트 이벤트를 가로 채기 위해 다음과 같은 방법을 추가 할 수 있습니다 (내가 컨트롤러 액션에() super.update를 사용할 수 있습니까? 우선 그)와 이메일의 경우 속성이 변경되어 해당 사용자 이름이 업데이트되었습니다. 내 머리 위로 떨어져 그것은 다음과 같이 보일 것입니다 :

def beforeUpdate() { 
    if (this.getDirtyPropertyNames().contains('email')) { 
     this.login.username = this.email 
    } 
} 

당신은 documentation에서 GORM 이벤트와 훅에 대한 자세한 정보를 확인할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. – JohnTheBeloved

+0

걱정할 필요가 없습니다. 기꺼이 도와주세요. –

관련 문제