Разбор текста в Rails

У меня есть приложение RoR, запущенное на Heroku, где я использую надстройку Cloudmailin для отправки электронных писем в само приложение.

Содержимое этих электронных писем будет использоваться для создания нового содержимого в базе данных. Это приложение, в котором пользователи могут делать ставки против других пользователей. Результаты отправляются по электронной почте в приложение, поэтому процесс расчета может быть запущен.

У меня есть контроллер входящей почты, который выглядит так:

class IncomingMailsController < ApplicationController
  skip_before_filter :verify_authenticity_token

  def create
    Spotprice.create(:deliverydate => Date.tomorrow, :spotarea_id => Spotarea.find_by_areaname("Phelix").id, :product_id => Product.find_by_productname("Base").id, :value_in_currency => "87")
  end

end

Вышеописанное работает просто отлично, но мне нужно, чтобы оно читало содержимое электронной почты вместо статического содержимого в приведенном выше коде (Phelix, Base, Date.testival и 87).

Итак, как мне это сделать, когда тело письма выглядит следующим образом:

23112012 Phelix Base 87.00
23112012 System Peak 64.55

Почта имеет несколько строк, где каждая строка представляет собой один новый Spotprice в базе данных. Это означает, что я так или иначе должен пройти через каждую строку в почте и создать каждый Spotprice отдельно.

Помощь будет очень цениться:)

1 ответ

Решение

Если все, что вам нужно, это как разобрать каждую строку текста, разделенного пробелами, это должно сработать -

email_text_array = []

email_text.split("\n").each do |email_line|
    email_text_array << email_line.split(" ")
end

и email_text_array будет выглядеть так

email_text_array = [
    ["23112012", "Phelix", "Base", "87.00"],
    ["23112012", "System", "Peak", "64.55"]
]
Другие вопросы по тегам