ActiveRecord에는 모델 논리를 단순화하는 데 사용되는 몇 가지 다른 콜백 메소드가 있습니다. 예를 들어, after_find
및 before_create
방법.왜 ActiveRecord 콜백은 인스턴스 변수 나 인스턴스 메소드에 접두사 self 키워드가 필요합니까?
하면이 코드 예제 고려 : 나는 인스턴스 변수 나 인스턴스 메소드의 모든 self
접두사를 제거하면 이러한 두 콜백이 호출됩니다
class ExternalPrintingCard < ActiveRecord::Base
belongs_to :user
belongs_to :ph_user
after_create :change_pin
def change_pin
self.user.randomize_printer_pin
end
def after_find
return if self.card_status == false
self.card_status = false if self.is_used_up?
self.card_status = false if self.is_expired?
self.save!
end
end
을하지만,이 콜백 내부의 지역 변수가있는 것처럼입니다 행동 양식.
이 인스턴스 변수 (card_status
) 인스턴스 메소드 (save!
, is_used_up?
및 is_expired?
) 및 결합 (user
)은 접두어없이 self
이들 2 콜백 방법 밖에 미세했다.
콜백 메소드 (인스턴스 메소드)에 대한 레일스 문서의 샘플 코드는 self
접두어가 없으면 액세스 할 수있는 인스턴스 변수 또는 메소드를 호출하더라도 항상 self
접두사를 사용하는 것처럼 보입니다.
ActiveRecord 콜백을 더 잘 이해하는 사람이이 동작에 대해 도움이되기를 바랍니다.
환호
자세한 내용은 Thoughtbot 기사를 참조하십시오. http://robots.thoughtbot.com/post/185504560/to-self-or-not-to-self –
http : //www.rubyfleebie를 설명하는 또 다른 기사입니다. com/use-self-명시 적 / –