module Jobshop class Registration < VirtualRecord memo_attr(:user) { site.users.build(user_params) } memo_attr(:site) { record = Jobshop::Site.find(params[:site_id]) record.assign_attributes(site_params) record } def save return false unless valid? result = ActiveRecord::Base.transaction do user.save! site.update!(owner: user) end result != false end private def registration_params params.fetch(:registration, ActionController::Parameters.new) end def site_params registration_params.fetch( :site, ActionController::Parameters.new).permit(:name) end def user_params registration_params.fetch(:user, ActionController::Parameters.new). permit(:email, :password, :password_confirmation) end end end