2011-01-14 4 views
1

Padrino 애플리케이션에서 partial_updates를 사용하도록 ActiveRecord를 구성하는 방법은 무엇입니까?Padrino의 ActiveRecord 부분 업데이트

Customer < ActiveRecord::Base 
    after_update :check_name_change 

    private 
    def check_name_change 
    if name_changed? 
     # send mail notification for change of name. 
    end 
    end 
end 

사용자는 데이터베이스에서 '이름'과 '국가'속성을 가지고 있다고 생각하십시오.
사용자가 이름을 업데이트하면 예상대로 전자 메일 알림을 보냅니다. 그러나 사용자가 국가 (또는 기타) 특성을 변경하는 경우에도 허용되지 않는 이름 변경에 대한 알림을 보냅니다.

로그를 검사 할 때 국가 업데이트 쿼리가 사용자 레코드의 모든 특성을 설정하여 전체 업데이트를 수행하는 것으로 나타났습니다. 그와 같이 name_changed? 메서드는 true를 반환하고 이름 변경에 대한 알림 전자 메일이 전송됩니다.

가 나는 차이를 볼 app.rb

ActiveRecord::Base.partial_updates = true 

에 다음 줄을 추가합니다. 모든 update_attribute 호출은 여전히 ​​레코드의 전체 업데이트를 수행합니다.
다른 해결 방법이나 해결 방법이 있습니까?

답변

0

이것은 padrino와 관련이 없지만 활성 레코드에만 관련됩니다.

before_save에서 사용해보십시오.

+0

활성 레코드에이 문제가 있습니까? 이것이 활성 레코드 3.0.0을 사용하고 있는데, 이것이 이후 버전에서 수정 되었다면 어떤 생각입니까? before_save 사용에 대한 제안은 실제로 이미 구현되었지만 실제로는 위의 시나리오에서만 작동합니다. 일반적으로 after_save는 after_create 대신 항상 사용할 수 없습니다. 내 문제는 부분적인 업데이트에만 국한되며, 제대로 작동해야합니다. – Vignesh

관련 문제