虚拟多参数属性?

时间:2014-03-03 23:11:01

标签: ruby-on-rails ruby ruby-on-rails-4

所以我有一个rails模型,可以将操作时间存储为postgres tstzrange,使用rails我可以使用虚拟属性opens_atcloses_at完成此操作。目前我有这些属性的数据库列,不保存任何内容,但我必须拥有它们,因为rails会抱怨不知道接收多参数赋值的属性的类,除非它映射到数据类型。

这里有一些额外的动作片并不重要,所以不包括在内。

我想我要问的是:有没有办法删除数据库列closes_atopens_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

0 个答案:

没有答案