email - How to exclude guest users from getting emailed Rails 4 Devise -


just set first mailer on rails 4. have welcome email sent new users sign (create) new account using devise.

i have devise set if current_user not found, guest user created. unfortunately, interfering mailer. every time guest account created, mailer send email non-existing email.

i having trouble figuring out how exclude guests mailer.

user.rb:

after_create :send_welcome_mail def send_welcome_mail   usermailer.welcome_email(self).deliver end 

mailers/user_mailer.rb:

class usermailer < actionmailer::base   default from: "example@gmail.com"    def welcome_email(user)     @user = user     mail(:to => user.email, :subject => "welcome!")   end  end 

application_controller.rb (guest creation):

def current_or_guest_user     if current_user       if session[:guest_user_id] && session[:guest_user_id] != current_user.id         logging_in         guest_user(with_retry = false).try(:destroy)         session[:guest_user_id] = nil       end       current_user     else       guest_user     end   end    # find guest_user object associated current session,   # creating 1 needed   def guest_user(with_retry = true)     # cache value first time it's gotten.     @cached_guest_user ||= user.find(session[:guest_user_id] ||= create_guest_user.id)    rescue activerecord::recordnotfound # if session[:guest_user_id] invalid      session[:guest_user_id] = nil      guest_user if with_retry   end    private    # called (once) when user logs in, insert code application needs   # hand off guest_user current_user.   def logging_in     # example:     # guest_comments = guest_user.comments.all     # guest_comments.each |comment|       # comment.user_id = current_user.id       # comment.save!     # end   end    def create_guest_user     u = user.create(:name => "guest", :email => "guest_#{time.now.to_i}#{rand(100)}@example.com")     u.save!(:validate => false)     session[:guest_user_id] = u.id     u   end 

i'm sure easy, still new rails , bit confused on best way go this. let me know if need other code.

def welcome_email(user)    # following line unnecessary. normally,   # when want make variable   # available view    #@user = user    # can make if more explicit writing   # if user.id == nil, if return false in   # ruby if value doesn't exist (i.e. nil)    if user.id     mail(:to => user.email, :subject => "welcome!")   end  end 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -