2016-10-12 6 views
0

나는 이것을 더 좋은 방법으로 생각할 수 없다. 죄송합니다!ActiveModel에 대한 변경을 가짜로 만들거나 열을 '흉내 낸'것으로 모방합니까?

궁극적으로 나는 특정 속성 목록이 변경 될 때만 실행하고 싶은 시간의 99 %를 콜백합니다. 하지만 두 경우에 나는 return unless previous_changes & watched_attributes을 전달할 수 있기를 바랍니다.

변경 사항을 특정 속성으로 조롱하는 방법이 있습니까? 어떻게 든 model.attribute_changed?을 true로 설정합니까?

나는 model.touch을 사용했지만 updated_at은 의도적으로 무시하고 싶은 열입니다.

답변

0

예, 당신은 당신이 뭔가를 시도 할 수 변경된 방법

@object.changed #=> ['column_name'] 
0

를 사용하여 변경된 속성의 배열을 얻을 수있는 다음 명령

@object.column_changed? #=> true 

를 사용하여 속성이 변경되었는지를 확인하실 수 있습니다 다음과 같이 입력하십시오.

object.attribute_name_will_change! 
object.changed << :attribute_name 
puts object.attribute_name_changed? 
puts object.changed? 

결과 출력은

입니다.
true 
true 

attribute_name은 속성 이름으로 대체됩니다.