2010-06-08 6 views
0

voip_phone이라는 모델에 schedule이라는 속성이 있습니다.이 문자는 언제 어떤 사람이 전화를 사용하고 있는지 추적합니다. 여기에 schedule의 예 레일 : 객체에 대한 변경 사항이 적용되지 않습니다

def add_shift(days, person_id, time_from, time_to) 
    return false if shift_overlap?(days, time_from, time_to) 
    days.each do |d| 
     insert_point = self.schedule.index(d)+4 
     self.schedule.insert( 
      insert_point, [person_id.to_s, time_from, time_to].join(",") + ";") 
    end 
    save! 
end 

는 상관없이 내가 뭘, 내가이 방법을 작동시킬 수 없습니다 :

다음

"mon{}sun{}sat{}tue{13,08:45,15:15;}wed{13,09:00,17:30;}thu{}fri{}"

이 작동하지 않습니다 모델 코드입니다. 다음은 콘솔에서 읽은 것입니다.

v = VoipPhone.find(5) 
=> blah, blah, blah 
v.add_shift(["thu", "fri"], 13, "08:45", "15:15") 
=> true 

이 방법은 효과가 있지만 변경 사항이 적용되지 않습니다. v.schedule으로 전화하면 새로운 일정이 표시되지만 VoipPhone.find(5).schedule으로 전화하면 이전 일정이 계속 표시됩니다. v.save을 호출하면 true가 반환되지만 변경 사항은 여전히 ​​적용되지 않습니다!

karmaless 영혼에게 제공 될 수있는 모든 도움을 주시면 감사하겠습니다 :) 당신은 2.3 AFAIR

보기를 레일에 도입 된 "더러운 속성"최적화에 직면 해

답변

1

this article

간단히 말해서 "self.schedule_will_change!"를 호출하십시오. 실제로 그것을 바꾸기 전에.

당신을 위해 작동하지 않을 경우, 당신은 'DUP'등으로 해결할 수 있습니다 :

self.schedule = self.schedule.insert(....).dup 
+0

감사합니다, 데이빗! self.schedule_will_change! 트릭을 완벽하게 했어! – muirbot

관련 문제