David

Joined

50 Experience
0 Lessons Completed
0 Questions Solved

Activity

Hi y'all!

I am brand new to the world of rails so please forgive my ignorance with this question :)

I am currently setting up a new app which has a two models:

  1. Account
  2. User

My seed file looks like this:

account = Account.create!(name: 'Account Name')

account.users.create!(
  first_name: 'Test',
  last_name: 'Test',
  email: 'test@test.com,
  password: 'test',
  owner: true
)

And the users model is:

class User < ApplicationRecord
  belongs_to :account
 ...
end

I have created a custom Devise registrations controller to let new users sign up:

class Users::RegistrationsController < Devise::RegistrationsController
  # GET /sign_up
  def new
    render inertia: 'Auth/Register', props: {}
  end

  # POST
  def create # rubocop:disable Lint/UselessMethodDefinition
    super
  end

  def sign_up_params
    params.require(:user).permit( :email, :password, :first_name, :last_name)
  end
end

BUT! I need to pre-create an account for a user before I actually create the user here and this is something I have been stuck on for a few days with no luck (to the point Ive considered changing the association's).

My best guess was I needed to do something like:

# POST
  def create # rubocop:disable Lint/UselessMethodDefinition
    account = Account.create!(name: 'Test')
    account.users.create!(sign_up_params)
  end

to mimic the logic of the seeds file but this seems distinctly wrong to me and doesn't work.

So my question is, is it possible and how can I pre-create a Account model for a user and then associate it to the user in the registrations create method before the user is persisted to the database?

Thank you so much in advance for any help!