2016-02-06 51 views
-1

更新的属性我on Rails的4轨道4 - 根据时间/日期

我现在有一个Room模型与active?属性。创建房间时,用户可以设置不同的时间和日期,让他们的房间处于活动状态。

我的目标:如果用户创建与日期3月3日的房间 - 3月5日,我想将在5月同样设置为true年03月3 falseactive?然后无二如果用户设置时间(例如,上午10点 - 下午5点)

什么是最好的方式去做这件事?无法找到任何文档。如果有人能指出我正确的方向,将不胜感激。

+0

你如何存储你的开始和结束日期? – Prescott

回答

0

它你是如何存储你的开始和结束日期的,但是假如你有start_dateend_date不清楚,那么你可以如下定义您active?方法:如果需要

def active? 
    Date.current >= start_date && Date.current < end_date 
end 

更换DateDateTime

+0

是的,我有一个'start_date'和'end_date'也被保存到数据库。我认为这会起作用,但是当数据库到达开始或结束时,我将如何实际更新数据库中的'active?'属性? – Kathan

+0

你可能不想这样做,你必须有一个不断运行的进程,并寻找改变数据库设置的条件。你应该计算它是否有效,除非你有一个非常有说服力的理由。 – Prescott

+0

你不会在数据库中拥有一个活动属性,你可以单独计算活动(或不活动)如上,无论是在查询数据库(你可以制作范围)和查看加载的记录。如果你真的想在数据库中有一个更新的活动列,你需要一个重新定位的bg作业来更新它 - 你可以这样做,虽然它总是会有一些轻微的滞后已经正确更新了。但是这个解决方案更好。 – jrochkind

0

添加预定表并记录用户进行预约时的日期时间。

class Reservation < ActiveRecord::Base 
    attr_accessible :reservated_from, :reservated_to 
    belongs_to :room 
end 

class Room < ActiveRecord::Base 
    has_many :reservation 
end