2017-07-21 18 views
0

我很抱歉,但我如何檢查保存的關聯是否是new_record ?.因爲after_save或before_save在保存關聯後調用。如何檢查new_record?關聯保存在rails

class Children 
    belongs_to parent 
    after_create :check_new_record_of_parent 
    # before_save :check_parent_saved # call this method also not work 

    private 
    def check_new_record_of_parent 
    parent.new_record? # not work because parent is saved before this method called 
    end 

    def check_parent_saved 
     parent.nil? 0 : 1 
    end 
end 

class Parent 
    has_many children 
end 

我調用children.update_attributes(nested_form)而不是children.save;

+0

你是說你可以有多個孩子的父母? –

+0

這裏有些東西,對於一個孩子來說,父母應該在場,你的孩子將被保存爲'parent.childrens.new(nested_form)',你的控制器是怎麼看的?你爲什麼要檢查?更多的上下文將有助於尋找替代解決方案。 –

+0

@霍曼不,一個孩子只有一個父母。 – Hung

回答

0
def before_save 
    @was_a_new_record = new_record? 
    return true 
end 

def after_save 
if @was_a_new_record 
    ... 
end 
end 

試試看看它是否有效。