2012-02-01 4 views
2

画像と画像のドメインモデルが存在する例を構築する。Grailsの2つの1対多の関係の1つに1つのクラス(例:Video or Imageのコメント)がありますか?

package commentstest 

class Video { 

    static constraints = { 
     embeddUrl(blank:false,nullable:false,url:true) 
    } 

    String embeddUrl 

    static hasMany = [comments:Comment] 
} 

package commentstest 

class Image { 

    static constraints = { 
     fileName(blank:false,nullable:false) 
    } 

    String fileName 

    static hasMany = [comments: Comment] 
} 

、最後にコメント

クラス

package commentstest 

class Comment { 

    static constraints = { 
     body(blank:false,nullable:false) 
    } 

    String body 

    static belongsTo = [image:Image, video:Video] 
} 

を今私がいる問題を次のように各コメントモデルと1対多の関係を持っていますそれは私が 'コメント'を作成するとき、それはビデオまたは画像のいずれかに追加できなければならないということです。現在のところ、スキャナーでは画像と動画の両方のオプションが設定されていますが、これらのフィールドのいずれかを空にするオプションはありません。

どのようにすればいいですか?

static belongsTo = [image:Image,video:Video] 

しかし、私は、それはどちらか一方に属している必要があることを指定する方法を知らない:イムは確かに私の問題はラインから産卵されています。両方ではありません。

+0

、 それをテストしていないあなたは、これらの属性に 'クラスフェイス{ 静的hasOneの= [鼻:鼻]制約を提供することができます 静的な制約= {鼻ユニークました: true} } ' ' blank:true'制約が役立ちます。しかし、それらが提供されていることを確認する必要があります。 これは、原因ではなく症状の治療のような回避策です – Zobbl

答えて

2

私が見て理解できることから、static belongsTo = [image:Image,video:Video]が根本原因だと言えます。あなたは何をすべき

を使用すると、ビデオや画像のいずれかに設定することができますコメント

static constraints = { 
     fileName(blank:false,nullable:false) 
     image(nullable:true) 
     video(nullable:true) 
    } 

であなたの制約のため、このようなものを追加しています。

希望します。それが動作するかどうか私にはわからない

関連する問題