(Объект не поддерживает #inspect) для почтовых Rails - PullRequest
0 голосов
/ 19 сентября 2018

Итак, я пытаюсь создать два электронных письма.Один отправляется в Ресторан, когда у него есть хотя бы заказ (orders_of_the_day), в противном случае он отправляет другие (no_order_today).

Дело orders_of_the_day прекрасно работает.Второе: нет: при запуске RestaurantMailer.no_order_today в локальном режиме появляется следующая ошибка:

(объект не поддерживает #inspect)

Вот мой restaurant_mailerФайл .rb:

class RestaurantMailer < ApplicationMailer
  default from: 'noreply@takeameal.fr'

  def self.send_orders_of_the_day
    @restaurants = Restaurant.where(vacation_mode: false)
    @restaurants.each do |r|
      @meal = Meal.find_by(restaurant_id: r[:id], week_day: Date.today.cwday)
      @orders = Order.where("created_at >= :start_time and meal_id = :meal", start_time: DateTime.new(Date.today.year, Date.today.month, Date.today.day, 13, 0, 0).in_time_zone('Paris').prev_day, meal: @meal.id).order(:pick_up_time)
      if !@orders.empty?
        orders_of_the_day(r, 'À OUVRIR AVANT 11H30 : COMMANDES TAKE A MEAL ', @meal, @orders).deliver_now
      else
        no_order_today(r, 'Pas de commandes Take a Meal aujourd\'hui', @meal)
      end
    end
  end

  def orders_of_the_day(recipient, shift, meal, orders)
    @meal = meal
    unless @meal.nil?
      @orders = orders
      emails = [recipient[:email], recipient[:email2], recipient[:email3]].delete_if { |email| email.empty? }
      mail(to: emails, subject: shift)
    end
  end

  def no_order_today(recipient,shift, meal)
    @meal = meal
    emails = [recipient[:email], recipient[:email2], recipient[:email3]].delete_if { |email| email.empty? }
    mail(to: emails, subject: shift)
  end

end

Есть идеи о том, почему я получил это и как его решить?

1 Ответ

0 голосов
/ 20 сентября 2018

Как упомянул @Pardeep Dhingra в комментариях, мне нужно позвонить deliver_now, чтобы отправить письмо.

Запуск RestaurantMailer.no_order_today(recipient, shift, meal) в консоли также не будет работать.Поэтому правильный ответ:

  • RestaurantMailer.no_order_today(recipient, shift, meal).deliver_now для проверки в консоли

  • no_order_today(r, 'Pas de commandes Take a Meal aujourd\'hui', @meal).deliver_now в моем коде.

...