2009-11-05 2 views
1

나는 _changed에 대해 물어볼 수있는 집계 된 속성이 있습니까?어떻게 집계 된 속성 ActiveRecord :: Dirty 의미를 지원합니까?

foo.range = 1..10 

이 내가 무엇을 얻을 : 내가 집계를 사용하는 경우

composed_of :range, 
      :class_name => 'Range', 
      :mapping => [ %w(range_begin begin), %w(range_end end)], 
      :allow_nil => true 

등, 다움

foo.range    # => 1..10 
foo.range_changed?  # NoMethodError 
foo.range_was   # ditto 
foo.changed    # ['range_begin', 'range_end'] 

을 그러니까 기본적으로, 나는 액티브을받지 못했습니다 :: 더러운 semanitcs을 집계 된 속성에 대해 그것을 할 방법이 있습니까? alias_attribute_with_dirty 등으로 많은 행운을 얻지는 못합니다.

답변

0

집계 된 속성은 연관 속성이 아니기 때문에 실제 속성에 대한 단순한 래퍼가 아니므로 ActiveRecord :: Dirty 의미를 얻지 못합니다. 따라서 액세스 권한이 없습니다 그 (것)들을 통해서 ActiveRecords 선량에.

주, 그 foo.range_begin_changed?해야 작업, 당신은 당신이 자동으로 foo.class의 실제 속성에라는 것과 *_was, *_changed? 등의 방법을지도하는 foo.class#method_missing 사용할 수 있습니다 (모듈에 정의를 예를 들면 포함되는) 있는지 확인하기 위해 시도 할 수 있도록 .

관련 문제