associations - Silent failure in creating child record even with create! in Rails - expected behaviour or bug? -


i ran weird issue working code user creation stopped working without change in model or controller. have following relationship between user , company in user.rb:

has_many :company_users, dependent: :destroy has_many :companies, through: :company_users 

appropriate relationships defined in company.rb , company_user.rb files well. happens when user created, if haven't assigned company him, new company created , assigned him. obviously, means creating companyuser record associate them. done through before_create callback. this:

user = user.new(user_params) company = company.create(company_params) user.company_users.build(company: company) 

short version:

user saved, company saved, company_user not saved because failed validations. no errors raised create!. expected or bug in rails?

long version

this working fine until yesterday stopped working today. company , user created not through record, leaving records unassociated. like:

user.create! email: "mymail@gmail.com", password: "mypass" 

no errors raised, company , user created no association. after investigating time, found problem. in company_user.rb, there were:

validates_uniqueness_of :invitation_token validates_inclusion_of :invitation_status, in: invitation_statuses 

these columns added, meant records had nil values, , record nil wouldn't accepted. inclusion validation wouldn't accept nil. adding allow_blank: true both resolved issue.

the rails version 5.0.3 , ruby version 2.4.0. expected behaviour in rails, or bug? can avoid these kind of pitfalls in future - bit difficult handle errors when user.errors doesn't contain anything.


Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -