如何在续集中为postgres范围类型编写迁移?

时间:2016-02-20 15:04:11

标签: ruby sequel

是否可以在续集迁移中定义postgres范围类型(​​例如,tsrange)?我在文档中找到了pg_range扩展名,但找不到示例迁移...

1 个答案:

答案 0 :(得分:1)

Sequel使Postgres数据类型可用作迁移中的关键字。这是我刚刚为批量折扣计划表做的一个,其约束条件是禁止同一产品组的重叠范围:

create_table(:product_group_bulk_discounts) do
  primary_key :id
  foreign_key :product_group_id, :product_groups, :on_delete=>:cascade
  int4range :quantity
  money :unit_cost_delta, :default=>0, :null=>true
  exclude [[:product_group_id, '='], [:quantity, '&&']]
end

N.B。:这种类型的排除约束要求在数据库上加载btree_gist扩展名。