说到语法,你写的代码没有意义。说到设计,也不是。
我可以建议你在尝试做这种事情之前学习一点 OOP 吗?:)
但是让我们面对您提交的问题。
第一个建议:不要为你的应用程序实现安全系统,有很多东西可以为你做。最重要的一个:Spring Security 插件。
第二:您编写的代码不起作用,因为扩展一个类是使另一个类成为父类的“儿子”的一种方式。在您的示例中,管理员是用户的儿子。
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)
}
如果你想让你的用户改变角色,最简单的想法是认为角色不是另一个类,而是它应该是用户的一个属性,所以你可以改变它。一旦创建了类的实例,就无法更改它(可能这并不完全正确,但您不应该这样做)。
好的,一些代码:
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
}
这对我来说仍然不是一个好的设计解决方案,我只是想让你能够看到你做错了什么。