2011-11-16 7 views
1

before_save 레일에서 작동하지 :콜백 함수 내가 모델에 다음과 같은 한

before_save :set_defaults 

def set_defaults 
    self.num_results ||= 5 
end 

그리고 나는 이런 식으로 내 컨트롤러에서 개체를 만들 : 내가 설정하지 않은 경우에도

Search.create!( :keyword  => params[:keyword], 
       :ip_address  => request.remote_ip, 
       :referring_page => request.referer) 

num_results의 값은 여전히 ​​0 (DB 스키마의 기본값)으로 저장됩니다. 콜백 함수가 전혀 호출되지 않습니다. 모든 단서?

업데이트 :

나는이 문제에, 전화를받을 않습니다 콜백을 밝혀 : 나는 루비의 기본 값을 설정하는 것이 어떻게

self.num_results ||= 5

? 이것이 작동하지 않는 것 같습니다.

답변

1

num_result가 nil 인 경우 num_results는 5로만 설정됩니다. 귀하의 경우 기본적으로 0으로 설정되어 있으므로 할당자는 아무 것도하지 않습니다. 할당을 다음과 같이 변경하십시오 :

self.num_results = 5 
+0

그러나 모델에 0을 설정하지 마십시오 (db 스키마 정의에만 있음). 아무 것도 명시 적으로 설정되지 않은 경우 값을 입력하는 방법이 있습니까? – user1049097

+0

마이그레이션 중에이 기본값보다 더 높은 기본값을 정의한 경우 개체가 초기화 될 때 설정됩니다. 모델에서 다시 설정하지 않아도됩니다. – auralbee