【发布时间】:2017-11-17 23:44:37
【问题描述】:
我想在我的 Rails 应用程序中将持续时间(2 天、5 年……)保存为 PostgreSQL 中的间隔。
duration_min 和 duration_max 都是“2 天”或“5 年”之类的值,因此它们各自都是一个间隔:
def change
create_table :times do |t|
t.interval :duration_min
t.interval :duration_max
t.timestamps
end
end
但是将数据类型设置为“interval”时DB迁移失败,rake返回:
undefined method 'interval' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:0x007f8615694360>
如何定义表格以使其接受(并理解)“2 天”之类的输入?
【问题讨论】:
-
原始迁移现在适用于 rails 5.1.3(可能 >= 5.1):但是,在回读时,它仍然被视为字符串,例如对于“P1M”或 1.month,记录将包含字符串“730:29:06”。
-
仅供参考,有一个 Rails PR 支持反序列化:github.com/rails/rails/pull/16919
标签: ruby-on-rails ruby postgresql