Для этого ничего не получается. Ничего не найдено в API. Я ожидал какой-то метод класса или параметр конфигурации, чтобы установить его...
Итак, вместо вызова
from "[email protected]"
для каждого метода, его можно было бы вызвать автоматически.
Для этого ничего не получается. Ничего не найдено в API. Я ожидал какой-то метод класса или параметр конфигурации, чтобы установить его...
Итак, вместо вызова
from "[email protected]"
для каждого метода, его можно было бы вызвать автоматически.
конфигурации/среда/development.rb:
ActionMailer::Base.default :from => '[email protected]'
конфигурации/среда/production.rb:
ActionMailer::Base.default :from => '[email protected]'
Вы также можете установить это для каждого отправителя:
class MyMailer < ActionMailer::Base
default :from => '[email protected]'
end
Это не поддерживается по умолчанию. Но вы можете достичь этой функциональности, используя плагин action_mailer_callbacks. По существу этот плагин позволяет добавлять фильтры before
и after
для метода deliver
.
class FooMailer < ActionMailer::Base
before_deliver do |mail|
mail.from = "[email protected]"
end
end
Справка:
1) Статья, обсуждающая плагин.
Вы можете обезглавить патч from
методом ActionMailer::Base
.
Добавьте код ниже в config\initializers\mail.rb
class ActionMailer::Base
class_inheritable_hash :default
def from_with_default(input=nil)
return from_without_default(input) || default[:from] if input.nil?
from_without_default(input)
end
alias_method_chain :from, :default
end
Теперь вы можете настроить свое значение по умолчанию следующим образом:
конфигурации/среда/development.rb:
ActionMailer::Base.default = {:from => '[email protected]'}
конфигурации/среда/production.rb:
ActionMailer::Base.default = {:from => '[email protected]'}
Вы также можете установить это для каждого отправителя:
class MyMailer < ActionMailer::Base
self.default = {:from => '[email protected]'}
end
В Rails 4 вы можете установить это в своей среде (ах):
config.action_mailer.default_options = {
:from => "[email protected]"
}
В Rails 3:
конфигурации/среда/development.rb:
ActionMailer::Base.default :from => '[email protected]'
конфигурации/среда/production.rb:
ActionMailer::Base.default :from => '[email protected]'
Я пошел с методом обезглавливания, который предложил Кандада Боггу. Однако в Rails 2.3.8 это не работает. вы не можете переопределить значение по умолчанию. Это работает, однако:
def from_with_default(input=nil)
return instance_variable_set("@from", input) unless input.nil?
from_without_default || FROM_EMAIL
end
alias_method_chain :from, :default