Как конвертировать эксклюзивный диапазон в инклюзивный диапазон в Ruby? - PullRequest
3 голосов
/ 23 сентября 2019

У меня есть эксклюзивный диапазон целых чисел, например,

range = 1000...10001

Я бы предпочел работать с инклюзивными диапазонами полностью, но причина этого заключается в том, что, когда я говорю ActiveRecord хранить инклюзивный диапазон вPostgreSQL, я получаю эксклюзивную версию, когда запрашиваю ее обратно.

Я хочу преобразовать ее в включающий диапазон, например, 1000..10000.

Я делаю:

(range.begin)..(range.end-1)

Однако это выглядит неуклюже и не-ruby-ish.

Весь мой API опирается на проходные диапазоны, но я такжерассмотреть возможность создания двух значений или хранения массива в Postgres вместо диапазона.

Есть ли лучший способ сделать это?


Редактировать (некоторые пояснения)

Я хочу сделать это максимально эффективно, учитывая большую разницу между диапазонами

Мой вариант использования - использовать начальную и конечную части диапазонов.Я на самом деле не перебираю их и не проверяю включение.Я просто подумал, что рубиновый диапазон - это хороший способ для представления фактического диапазона, например, для отображения цены ($ 1000 - $ 10.000)

1 Ответ

3 голосов
/ 23 сентября 2019

Я бы использовал Range#min и Range#max:

exclusive_range = (1000...10001)
inclusive_range = (exclusive_range.min..exclusive_range.max)
#=> 1000..10000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...