2014-03-25 95 views
1

我有一個問題,我保存一個對象有2個nested_attributes,但它只保存第二個nested_attributes,如果我回來並更新第一個nested_attributes,它會正確保存。一個屬性有has_many和另一個has_one,它一次只能保存一個。Nested_attributes rails找不到兩個嵌套的

例如:

class Author 
    has_many :books 
    has_one :address 

    accepts_nested_attributes_for :books 
    accepts_nested_attributes_for :address 

end 

Params: 
author: {books_attributes: {"0" => {title: "Title Test", id: 1}}, address_attributes: {city: "São Paulo", id: 2}} 

這個例子只保存了作者的書籍

我該如何解決這個問題?

+0

你能說明你是如何使用params來創建/更新記錄嗎? – omnikron

+0

你的表單看起來如何? – nathanvda

回答

2

我有這個相同的問題,我無法用一個好方法解決。我不知道爲什麼,但在保存之前,似乎地址的屬性正在丟失。我這樣做:

class Author  
    has_many :books  
    has_one :address 
    accepts_nested_attributes_for :books 
    accepts_nested_attributes_for :address 

    before_save :build_address_object 
    after_save :save_address_object! 

    private 

    def build_address_object 
     @address = address 
    end 

    def save_address_object! 
     return unless @address 
     @address.author = self 
     @address.save 
    end 
end 

請注意,該書驗證地址的屬性,但何時將保存地址,似乎他失去了參數。