Search code examples
ruby-on-railsapimodelspree

How to override set_login in spree model user.rb?


In spree sign_up the app/models/spree/user.rb has

def set_login
  # for now force login to be same as email, eventually we will make this configurable, etc.
  self.login ||= self.email if self.email
end

How can I override set login and do something like this:

def set_login
  # for now force login to be same as email, eventually we will make this configurable, etc.
  self.login ||= self.phone if self.phone
end

Thanks in advance


Solution

  • I did this in app/models/spree/user_decorator.rb

     Spree::User.class_eval do
        Spree::PermittedAttributes.user_attributes << :phone
    
    
     def set_login
       # for now force login to be same as email, eventually we will make this configurable, etc.
       self.login ||= self.phone if self.phone
     end
    end