docbrown/app/models/users/notification_setting.rb
Takuma baab2c0930
Subscribe the newsletter if email_newsletter is changed (#14226)
* Check if email_newsletter is changed

* Check if Settings::General.mailchimp_api_key is defined

* Add spec for Users::NotificationSetting

* Remove spec for boolean column

http://www.chrisrolle.com/en/blog/boolean-attribute-validation

* Check if email is set when changing newsletter subscription setting

* Make it easy to read

* Remove specs for a case never happening
2021-10-06 12:30:22 +07:00

23 lines
820 B
Ruby

module Users
class NotificationSetting < ApplicationRecord
self.table_name_prefix = "users_"
belongs_to :user, touch: true
validates :email_digest_periodic, inclusion: { in: [true, false] }
alias_attribute :subscribed_to_welcome_notifications?, :welcome_notifications
alias_attribute :subscribed_to_mod_roundrobin_notifications?, :mod_roundrobin_notifications
alias_attribute :subscribed_to_email_follower_notifications?, :email_follower_notifications
after_commit :subscribe_to_mailchimp_newsletter
def subscribe_to_mailchimp_newsletter
return if Settings::General.mailchimp_api_key.blank?
return unless saved_changes.key?(:email_newsletter)
return if user.email.blank?
Users::SubscribeToMailchimpNewsletterWorker.perform_async(user.id)
end
end
end