2012-06-29 3 views
0

나는 update 동작 user_controller에 인스턴스 변수 (@edit_id)를 만들었습니다.레일스 모델은 인스턴스 변수를 사용합니다

def update 
    ...... 
    @edit_id = 1 
    ...... 
end 

이와 나는 user_model

has_many :details 
after_update :create_user_details 
    ...... 
    private 
    def create_user_details 
    detail = user.details.build 
    detail.edit_id = @edit_id 
    #(this @edit_id is the user_controller update action 
    #created instance variable, but **@edit_id is nil**) 
    detail.save 
    end 

에서 액티브 레코드 콜백을 내가 어떻게 당신은 모델의 컨트롤러에서 인스턴스 변수를 사용할 수 없습니다 콜백 액션

답변

2

에서 인스턴스 변수를 사용합니다.
둘 다 서로 다른 객체의 인스턴스이므로 인스턴스 변수를 공유하지 않습니다.

당신은 거기에 설정하여이 값과 모델을 제공 할 필요가

은 다음과 같이 인스턴스의 :

model Foo 
    attr_accessor :edit_id 

    private 
    def create_user_details 
    detail = user.details.build 
    detail.edit_id = edit_id 
    detail.save 
    end 
end 

그런 다음, 컨트롤러, 당신은 모델에 값을 지정하고 저장합니다.

def update 
    @foo = Foo.new 
    @foo.edit_id = 1 
    # Whatever other business logic you want to do 
end 
관련 문제