3

私はGrailsのnoobですので、私の質問をしてください。
私はドメインクラスUserとDeviceを作成しました。ユーザーhasManyデバイス:デバイス、およびデバイスbelongsToユーザー:ユーザー。
私のUserControllerでのコードは次のようになりますので、唯一の1つのデバイスに2人のユーザーに属していることは決してありませんことが重要である:ない(デバイスエントリに
ヌルID:ドメインクラスhasManyはエントリを追加できません

class UserController { 

static allowedMethods = [create: 'POST'] 

def index() { } 

def create() { 
    def user = User.findByUsername(request.JSON?.username) 
    def device = Device.findById(request.JSON?.deviceId) 
    if (device) { 
     device.user.devices.remove(device) 
    } 
    // device can only be owned by 1 person 
    def new_device = new Device(id: request.JSON?.deviceId, type: request.JSON?.deviceType) 

    if (!user) { 
     user = new User(
       username: request.JSON?.username 
     ) 
     user.devices = new HashSet() // without this I get null on the add in next line 
     user.devices.add(new_device) 
     user.save() 

     if(user.hasErrors()){ 
      println user.errors 
     } 
     render "user.create " + request.JSON?.username + " devices.size " + user.devices.size() 
    } else { 
     user.devices.add(new_device) 
     user.save() 
     if(user.hasErrors()){ 
      println user.errors 
     } 

     render "user.create exists, new token: " + user.token + " devices.size " + user.devices.size() 
    } 
} 

} 

しかし、今、私は奇妙なサーバーエラーを取得します例外が発生した後にセッションをフラッシュする)

私はここで何が欠けていますか?

ありがとうございます!

+0

request.JSON?.deviceIdの値は何ですか? log.infoで印刷してみてください(request.JSON?.deviceId) – Paul

答えて

8

まず、add toremove fromには特別な方法があります。多くのコレクションでまっすぐ操作しないでください。たぶんこれは問題です。

+0

これは本当に問題でした。私が言ったように - noobは、これらの方法を知らなかった。ありがとうございました! – Nadav

関連する問題