Rails如何在每次执行时更新实例变量值

时间:2016-03-12 15:06:00

标签: ruby-on-rails instance-variables

我需要在模型中解决这段代码的两个问题。据我所知,实例变量中的值将在第一次执行时保存,但由于它是日期和时间,因此每次调用该方法时都应该执行它们。怎么绕过那个?其次,如何访问downtime方法中的实例变量?

def entry_time
    @day = DateTime.now.wday
    @date = Date.current
    @time = DateTime.now.hour

    if downtime
        errors.add(:_, "Please submit your request during working hours")
    end
end

def downtime
    holidays || @time < 9 || @time > 17 || @day == 6 || @day == 0 
end

2 个答案:

答案 0 :(得分:0)

在这种情况下,AJAX会拯救你。您需要不断调用服务器,并使用最新值更新它。因此,您需要多长时间才能访问服务器。您可以使用setTimeout重复某个功能,并实现您的目标。

关于第二个问题,当您向@附加变量时,它可供整个班级使用,您可以随处访问它。所以,是的,你可以用downtime访问所有实例变量,就像你在任何其他方法中访问它们一样。

答案 1 :(得分:0)

试试这个:

 def entry_time
   @day = DateTime.now.wday
   @date = Date.current
   @time = DateTime.now.hour

   if downtime(@day,@date,@time)
    errors.add(:_, "Please submit your request during working hours")
   end
 end


def downtime(day,date,time)
   holidays || time < 9 || time > 17 || day == 6 || day == 0 
end