2010-11-22 83 views
0

m:n關係的相關對象可以通過我的應用程序中的html select元素(也可以是複選框列表)來選擇。如果全部相關對象在編輯表單中被取消選擇,則應清除相關對象的對象列表。只有至少有一個相關對象存在時,腳手架代碼才能起作用。Grails:刪除所有關聯的對象

實施例:

class Book { 
    String name 
    static hasMany = [authors: Author] 
    belongsTo = Author 
} 

class Author { 
    String name 
    static hasMany = [books: Book] 
} 

def b1 = new Book(name: "B1").save() 
def b2 = new Book(name: "B2").save() 
def author = new Author(name: "Stephen").addToBooks(b1).addToBooks(b2).save() 

// How to remove all books from the author? 

繼Grails的文檔我稱removeFrom*域對象上(的addTo*相反)的所有相關對象。但要做到這一點,我必須弄清楚,哪些對象是相關的。有沒有更簡單的方法來清除相關對象的列表?如果相關對象的列表將被空列表替換,那麼雙向關聯是否會被正確處理?

回答

2

我認爲你可能遇到的問題是,當在選擇框中或通過複選框選擇了這樣的項目時,沒有數據返回到控制器的請求。如果您希望能夠從關聯中刪除所有對象,則需要向表單添加一個額外的隱藏字段。

例如,如果存在具有許多類別添加以下產品:

<g:hiddenField name="categories" value=""/> 
從通常 select

開。

您可以爲控制器編寫一個測試,以確保所需功能的行爲如預期。

相關問題