改变狂欢from_address

时间:2016-10-08 14:05:15

标签: ruby-on-rails spree

我正在尝试从the_email

更改Spree 3.0

我将此行添加到我的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

这也行不通

3 个答案:

答案 0 :(得分:1)

检查您是否通过检查Spree :: Store.all

创建了多个商店

此外,狂欢使用当前商店作为最后更新的商店,因此您还必须检查

答案 1 :(得分:1)

您只需在配置 - >下的管理面板中更改来自电子邮件地址即可。常规设置:

Spree Admin Panel -> Configuration -> General settings

答案 2 :(得分:0)

以这种方式工作:

Spree::Store.current.update(mail_from_address: ENV["STORE_EMAIL"])

在这里http://www.davidverhasselt.com/set-attributes-in-activerecord/,您可以看到:

  

user.name =" Rob"

     

这种常规作业是最常见和最容易使用的。它是   Rails生成的默认写访问器。 name属性将   被标记为脏,并且不会将更改发送到数据库   爱好。

当然,狂欢初始化器声称要在数据库中保存,但它没有:

  

如果在此处设置了首选项,则它将存储在缓存中。初始化时的数据库。

最后调用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中的这个错误是可以解决的,这是一种解决方法