2009-11-03 5 views
0

모델의 새 인스턴스를 만들고 싶습니다. 그러나 다른 레코드의 일부 매개 변수도 가져오고 싶습니다. 기본적으로 대부분의 매개 변수를 새 인스턴스에 복제하지만 일부 필드는 비워 둡니다. 잘.`accepts_nested_attributes_for` 애트리뷰트가 복제되지 않음

작동 복제 (감사 @weppos)

# class RecipesController 
def new 
    @parent = Recipe.find(params[:parent_id]) 
    @recipe = @parent.clone 
end 

그리고이 작업을 수행하는 동안, 그것은 내 모든 중첩 된 속성 나누기 : 그것은 단지 새 속성을 저장하고 모든 이전을 던져처럼

# class Recipe 
accepts_nested_attributes_for :ingredients, :reject_if => lambda { |a| a.values.all?(&:blank?) }, :allow_destroy => true 

을 다른 것들로부터 복제 되어야만하는 것들.

답변

1

clone 방법을 사용하십시오.

@parent = Recipe.find(params[:parent_id]) 
@recipe = @parent.clone 

는 복제 행동은 당신이 모든 불필요한 속성을 해제하기 #clone부터 사용자 정의 메소드를 만들 수 있습니다, 당신의 필요에 적용되지 않는 경우.

+0

흠 ... 복제본이 완벽하게 작동했지만 내 중첩 된 특성을 복제하지 못했습니다. 이 버그와 관련이 있습니까> https://rails.lighthouseapp.com/projects/8994/tickets/3391-nested-attributes-vs-before_save –

관련 문제