所以我有一个rails模型,可以将操作时间存储为postgres tstzrange
,使用rails我可以使用虚拟属性opens_at
和closes_at
完成此操作。目前我有这些属性的数据库列,不保存任何内容,但我必须拥有它们,因为rails会抱怨不知道接收多参数赋值的属性的类,除非它映射到数据类型。
这里有一些额外的动作片并不重要,所以不包括在内。
我想我要问的是:有没有办法删除数据库列closes_at
和opens_at
,仍然可以通过网络提交日期时间并让其序列化?我可以以某种方式使用attr_accessible
之类的东西来指向数据类型吗?
class OperationDay
def closes_at=(close)
close = to_2012(close)
Rails.logger.debug "OD-#{self.id} set closes_at to #{close}"
@closes_at = close
check_wrap
end
def opens_at=(open)
open = to_2012(open)
Rails.logger.debug "OD-#{self.id} set opens_at to #{open}"
@opens_at = open
check_wrap
end
def opens_at
return self.open if @opens_at.nil?
to_2012(@opens_at)
end
def closes_at
return self.close if @closes_at.nil?
to_2012(@closes_at)
end
end