我只是在创建一个设置页面,用户可以在其中更改他的用户名。奇怪的是我使用相同的 finder 方法在主视图和表单中显示它,但对象彼此不相关。
现在的副作用是,如果我不输入用户名并单击保存。两个对象都更新了。以及错误的视图中的显示。
我只想以单独的模型形式使用。我在这里做错了什么?我认为每次调用“Model.find”都会返回我一个对象的不同引用,即使它在数据库中的同一行也是如此。玩在这里做一些智能缓存吗?
这很烦人,因为更改表单中的用户意味着更改视图中所有其他相同的用户对象。
呈现创建/编辑页面的操作:
public static void index(){
User appUser = User.findUser(SecureSocial.getCurrentUser().id);
render(appUser);
}
我的视图(显示当前登录的用户名)
${models.User.findUser(user.id).username}
我的模型:
public static User findUser(UserId userId){
User user = User.find("externalId = ? and provider = ?", userId.id, userId.provider.name()).first();
return user;
}
谢谢