문제

레일 모델에는 고용자 _wcb라는 소수점이 있습니다. 고용주 _wcb가 변경되었을 때 더러운 비트가 True로 설정되면 원합니다. 고용주 _wcb setter 메소드를 무시하고 싶습니다. 그렇게하는 방법 (특히 메타 프로 그램 사용)?

도움이 되었습니까?

해결책

실제로 Rails v2.1에서 이것은 레일로 구워졌습니다. 살펴보십시오 ActivereCord :: Dirty에 대한 문서. 요약해서 말하자면:

# Create a new Thing model instance;
# Dirty bit should be unset...
t = Thing.new
t.changed?              # => false
t.employer_wcb_changed? # => false

# Now set the attribute and note the dirty bits.
t.employer_wcb = 0.525
t.changed?              # => true
t.employer_wcb_changed? # => true
t.id_changed?           # => false

# The dirty bit goes away when you save changes.
t.save
t.changed?              # => false
t.employer_wcb_changed? # => false

다른 팁

레일의 더러운 비트 기능 (다른 이유로 무시하고 싶다고 말하면)을 사용하지 않으려면 별명 메소드를 사용할 수 없습니다 (위의 스티브 항목에 대한 내 의견을 참조하십시오). 그러나 슈퍼로 전화를 사용하여 작동 할 수 있습니다.

  def employer_wcb=(val)
    # Set the dirty bit to true
    dirty = true
    super val
  end

이것은 잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top