構文について言えば、あなたが書いたコードには意味がありません。デザインについて言えば、どちらでもありません。
この種のことを試みる前に、少しOOPを勉強することをお勧めしますか?:)
しかし、あなたが提出した問題に直面しましょう。
最初の提案:アプリケーションにセキュリティシステムを実装しないでください。それを実行できるものはたくさんあります。とりわけ、SpringSecurityプラグイン。
2番目:クラスを拡張することは、親の別のクラスを「息子」にする方法であるため、作成したコードは機能しません。あなたの例では、管理者はユーザーの息子です。
def update(){
def user1 = User.get("user1") // I don't get how this should work, but I'll leave it like this in this example
user1.authoritySelected // you're trying to GET the value a property that doesn't exist in the User class, you should SET something here
user1.save(flush:true)
}
ユーザーに役割を変更させたい場合、最も簡単な考えは、別のクラスとしてではなく役割を考えることです。代わりに、ユーザーの属性である必要があるため、変更できます。クラスのインスタンスが作成されると、それを変更することはできません(おそらく、これは完全に真実ではありませんが、変更するべきではありません)。
OK、いくつかのコード:
class User {
String name
String password
String authority // a property of the class you can change
}
def update(){
def user1 = User.get("user1")
user1.authority = 'Administrator' // change the property on the instance you retrieved
user1.save() // save the instance itself
}
これはまだ私にとって良い設計ソリューションではありません。私はあなたが間違っていることをあなたが見られるようにしようとしているだけです。