2014-01-31 2 views
0

문제가 있습니다. 나는 매일 모델 클래스에서 메소드를 매일 실행할 때마다 사용합니다 (물론). 이 메서드는 "holidays"인스턴스 컬렉션을 반복하고이 휴일의 존재를 클라이언트 (다른 ​​모델)에 알립니다.레일스를 사용할 때마다 4 - 모델의 속성 수정

여기에 문제가 있습니다. 휴일 인스턴스에는 "notified"라는 속성이 있습니다. 이 공휴일이 고객에게 통지되었는지 (이 공휴일에 두 번 통보하고 싶지 않음) 알기 위해이 정보를 사용합니다. 그렇게하기 위해서, 나는 "notified"속성의 값 (boolean)을 변경하기 위해 holiday 인스턴스의 속성에 접근 할 필요가있다. 그러나 나는 그것을 할 수 없다. (오류는 없지만 속성은 항상 false가된다.)

힌트가 있습니까?

holidays.rb

class Holiday < ActiveRecord::Base 
    belongs_to :user 

    def self.notify 
    @holidays = Holiday.all 

    @today = DateTime.now.to_date 

    @holidays.each do |holiday| 
     if holiday.notified == false && (holiday.fecha - @today).to_i < 15 
     @clients = holiday.user.clients 

     @clients.each do |client| 
      ReminderMailer.new_holiday_reminder(holiday, client).deliver 
     end 
     holiday.notified = true <== I need to include something like this 

     end 
    end 
    end 

end 

그리고 scheduler.rb

every :day do 
    runner "Holiday.notify", :environment => 'development' 
end 

감사합니다!

답변

0

update_attribute을 사용하십시오. 또한 알림 메서드에서 인스턴스 변수를 사용할 필요가 없습니다.

class Holiday < ActiveRecord::Base 
    belongs_to :user 

    def self.notify 
    holidays = Holiday.all 
    today = DateTime.now.to_date 
    holidays.each do |holiday| 
     if holiday.notified == false && (holiday.fecha - today).to_i < 15 
     clients = holiday.user.clients 
     clients.each do |client| 
      ReminderMailer.new_holiday_reminder(holiday, client).deliver 
     end 
     holiday.update_attribute(:notified, true) #or holiday.update_attributes(:notified => true) 
     end 
    end 
    end 
end 
+0

감사합니다! 당신은 최고입니다! –