2017-04-05 5 views
1

:레일 스킵 after_create I 2 개 모델이

class User < ActiveRecord::Base 
    has_one :client 
end 

class Client < ActiveRecord::Base 
    belongs_to :user 
end 

및 I 정상적으로 user 생성 된 후에 client를 생성하기 위해, after_create 필터 user 제를 만들고있다.

after_create :create_client 

은 내가 client가 존재하는 새로운 사례가 있고, 나는이 client 이미 존재하는 user 이후에 만들려고합니다. 이 경우 user을 만들 때 after_create 필터를 건너 뛰고 싶습니다.

나는 after_create :create_client, unless: ____이 필요하다는 것을 알고 있지만 어떻게 구별 할 수 있는지 잘 모르겠습니다. 당신이 attr_accessor

class User < ActiveRecord::Base 
    attr_accessor :has_client 
    ... 
end 

를 사용하여 인스턴스 변수를 만들고이 변수에 부울 값을 할당하고 말 그대로 그냥로 이것을 파악 if condition

class User < ActiveRecord::Base 
    ... 
    after_create :create_client, unless: :has_client 
    ... 
end 

답변

2

당신의 반응을 보았습니다. 어떤 이유에서 나는`attr_accessor`가 Rails 4에서 사라 졌다고 생각했지만,이 경우에 유용합니다.
+0

와 after_create을 제한 할 수 있습니다이 경우를 들어 –

+0

아마'Rails 4에서 사라진'attr_accessible'을 생각할 것입니다.'attr_accessor'는 직선적 인 Ruby 기능입니다. –

+0

@CoreyWoodcox 예, 나는 들었지만 공식 Rails Doc에서는 발견하지 못했습니다. 귀하의 연구 결과를 공유하십시오. –