CSV в RUBY пользовательской строке - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть 1 поле delivery_time Это в массиве:

DELIVERY_TIME = [
    I18n.t("activerecord.attributes.order.none_delivery_time"),
    "09:00~12:00",
    "12:00~14:00",
    "14:00~16:00",
    "16:00~18:00",
    "18:00~20:00",
    "19:00~21:00",
    "20:00~21:00",
  ].freeze

когда я скачал каталог csv, он был в форме

"09:00~12:00"

но я хочу сейчас при загрузке принять форму:

"0912"

как ее настроить?

мой код:

def perform
    CSV.generate(headers: true) do |csv|
      csv << attributes
      orders.each do |order|
        csv << create_row(order)
    end
  end
end


def create_row(order)
    row << order.delivery_time
end

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

AFAIU, вам нужно изменить DELIVERY_TIME, чтобы соответствовать вашему формату. CSV здесь абсолютно выходит за рамки. Таким образом, чтобы преобразовать значения, нужно разделить на и взять час из результата.

DELIVERY_TIME = [
    "09:00~12:00",
    "12:00~14:00",
    "14:00~16:00",
    "16:00~18:00",
    "18:00~20:00",
    "19:00~21:00",
    "20:00~21:00",
].freeze

DELIVERY_TIME.map { |s| s.split('~').map { |s| s[0...2] }.join }
#⇒ ["0912", "1214", "1416", "1618", "1820", "1921", "2021"]

Более безопасный метод - использовать DateTime#parse для этого

require 'time'
DELIVERY_TIME.map do |s|
  s.split('~').map { |s| DateTime.parse(s).strftime("%H") }.join
end
#⇒ ["0912", "1214", "1416", "1618", "1820", "1921", "2021"]

0 голосов
/ 14 апреля 2020

Не совсем понятно, о чем вы спрашиваете, но я, вероятно, начну с чего-то вроде этого:

"09:00~12:00".scan(/\d{2}/).values_at(0, 2).join # => "0912"

Используя это в некотором коде:


"09:00~12:00".scan(/\d{2}/).values_at(0, 2).join # => "0912"

DELIVERY_TIME = [
    'blah',
    "09:00~12:00",
    "12:00~14:00",
    "14:00~16:00",
    "16:00~18:00",
    "18:00~20:00",
    "19:00~21:00",
    "20:00~21:00",
  ].freeze

ary = [] << DELIVERY_TIME.first
ary += DELIVERY_TIME[1..-1].map { |i|
  i.scan(/\d{2}/).values_at(0, 2).join
}  
# => ["blah", "0912", "1214", "1416", "1618", "1820", "1921", "2021"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...