#ruby-on-rails #spree
#ruby-on-rails #веселье
Вопрос:
Я пытаюсь изменить Spree 3.0 из_email
Я добавил эту строку в свой инициализатор spree, но он не работает:
Spree::Store.current.mail_from_address = “x@x.com"
Знаете ли вы какую-либо причину, почему нет?
Я также поместил его непосредственно в свой декоратор почтовой программы:
Spree::OrderMailer.class_eval do
def confirm_email_to_store(order, resend = false)
Spree::Store.current.mail_from_address = "x@x.com"
@order = order.respond_to?(:id) ? order : Spree::Order.find(order)
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
subject = "#{'Will Call' if @order.will_call} #{'Just to See' if @order.just_to_see} ##{@order.number}"
mail(to: ENV['STORE_EMAIL'], from: from_address, subject: subject)
end
end
Это также не сработало
Ответ №1:
Проверьте, возможно, вы создали несколько хранилищ, проверив Spree::Store.all
Кроме того, spree использует текущее хранилище в качестве хранилища, которое обновлялось последним, поэтому вы также должны это проверить
Комментарии:
1. Spree::Store.all -, код: «spree», по умолчанию: true, created_at: «2016-09-30 17:02:03», обновленный_ат: «2016-09-30 17:02:03»>]>
2. Я смог настроить это через панель администратора, и конфигурация сохранилась
3. mail_from_address: «spree@example.com » это не обновлено, проверьте это
Ответ №2:
Вы можете просто изменить адрес электронной почты from в панели администратора в разделе Конфигурация -> Общие настройки:
Ответ №3:
Заставил это работать таким образом:
Spree::Store.current.update(mail_from_address: ENV["STORE_EMAIL"])
Глядя здесь http://www.davidverhasselt.com/set-attributes-in-activerecord / вы можете видеть, что:
user.name = «Ограбить»
Это обычное назначение является наиболее распространенным и простым в использовании. Это средство доступа для записи по умолчанию, созданное Rails. Атрибут name будет помечен как «грязный», и изменение еще не будет отправлено в базу данных.
Конечно, инициализаторы spree утверждают, что они сохраняют в базе данных, но это не так:
Если здесь задано предпочтение, оно будет сохранено в кэше и базе данных при инициализации.
Наконец, вызов Spree::Store.current извлечет данные из базы данных, поэтому все несохраненные изменения будут потеряны:
scope :by_url, lambda { |url| where("url like ?", "%#{url}%") }
def self.current(domain = nil)
current_store = domain ? Store.by_url(domain).first : nil
current_store || Store.default
end
Исправление этой ошибки в Spree было бы предпочтительным, это своего рода обходной путь