Hello everyone,
Has anyone run into errors with self.send in ActiveRecord models? I was working on this issue and narrowed it down to a specific function that calls self.send on an ApplicationRecord. Commenting out the code and replacing it with data manually to build up an object resolves the issue, but unfortunately we’re using it to check if attributes were updated via self.send("#{attribute}_change") if self.send("#{attribute}_changed?").
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              For me, it’s hard to say without taking a look at the code or a sample code. But here are some suggestions:
- 
Check if “#{attribute}_change” and “#{attribute}_changed?” methods return valid data. 
- 
As I can see, you are returning the line self.send("#{attribute}_change") if self.send("#{attribute}_changed?")without anyreturnkeyword, that means this must be the very last line of the method definition, and if theifpart is false, it will not evaluateself.send("#{attribute}_change"), in that case, it must returnnil.
 
 
            
              
              
              1 Like
            
            
                
                
              
           
          
            
            
              The weird part is, I tested the object it’s building with .valid? (using our favorite debug method puts) and the object appears to be valid.
I’m busy at the moment, but I’m looking at refactored code I wrote months ago and am merging into the project that may or may not have stripped away the troublesome function. I’ll post back here ASAP.
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              thanks my issue has been fixed.
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              I’ve actually narrowed this down further and realized it’s from self.employment_histories << employment_history. Even adding an EmploymentHistory with attributes assigned beforehand (a Hash with assign_attributes) there’s an error.
The problem disappears in Rails 6.1, so we are just forgetting about it for now.