ユーザーが自分のユーザー名を変更できる設定ページを作成しています。奇妙なことに、メイン ビューとフォームで表示するために同じファインダー メソッドを使用していますが、オブジェクトは互いに関連していません。
ユーザー名を入力せずに保存をクリックすると、副作用が発生します。両方のオブジェクトが更新されます。ビューの表示も間違っています。
別のモデルの形で使用したいだけです。ここで何が間違っていますか?「Model.find」を呼び出すと、データベース内の同じ行であっても、オブジェクトの異なる参照が毎回返されると思いました。play はここでインテリジェントなキャッシュを行っていますか?
フォーム内のユーザーを変更すると、ビュー内の他のすべての同じユーザー オブジェクトが変更されるため、非常に面倒です。
作成/編集ページをレンダリングするためのアクション:
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;
}
ありがとう