Разбор текста в 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"]
]