Postgres范围字段+ Rails表单

Stu*_*ssa 6 ruby postgresql ruby-on-rails

是否有任何标准方法将Postgres范围类型与Rails表单助手集成?我基本上需要一个最小和最大字段,可以在保存时转换为范围.有任何想法吗?

Grz*_*zek 3

起初我在想这样的事情:

class Model
  delegate :begin, :end, to: :range, prefix: true, allow_nil: true # Replace :range with your field name
end
Run Code Online (Sandbox Code Playgroud)

获取方法:range_begin, range_end. 我检查了文档,这些方法是只读的。

所以你还需要设置器:

class Model
  delegate :begin, :end, to: :range, prefix: true, allow_nil: true

  def range_begin=(value)
    self.range = Range.new(value, (range_end || value))
  end

  def range_end=(value)
    self.range = Range.new((range_begin || value), value)
  end
end
Run Code Online (Sandbox Code Playgroud)

如果您不在||设置器中使用,那么您会得到ArgumentError: bad value for range空记录。

在您的视图中,您可以使用字段range_begin和的常规输入range_end