Rails 真的不能正确支持 PostgreSQL 的区间数据类型吗?
我不得不使用这个堆栈溢出答案 https://stackoverflow.com/questions/20328028/using-interval-in-postgresql-with-ruby-on-rails从 2013 年开始创建一个间隔列,现在看起来我需要使用这段代码 https://gist.github.com/clarkdave/6529610从 2013 年开始,让 ActiveRecord 将间隔视为字符串以外的其他内容。
是这样吗?我是否最好只使用整数数据类型来表示分钟数?
从 Rails 5.1 开始,您可以使用 postgres 'Interval' 数据类型,因此您可以在迁移中执行以下操作:
add_column :your_table, :new_column, :interval, default: "2 weeks"
虽然ActiveRecord只将间隔视为字符串,但是如果您设置IntervalStyle
to iso_8601
在你的 postgresql 数据库中,它将以 iso8601 样式显示间隔:2 weeks => P14D
execute "ALTER DATABASE your_database SET IntervalStyle = 'iso_8601'"
然后您可以直接将该列解析为ActiveSupport::Duration
In your model.rb
def new_column
ActiveSupport::Duration.parse self[:new_column]
end
有关 ISO 8601 间隔的更多信息,请访问https://en.wikipedia.org/wiki/ISO_8601#Time_intervals https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)