0

Ich habe zwei Datenbanktabellen Benutzer und Konten. Wenn ein neuer Benutzer erstellt wird, wird seine primäre E-Mail-Adresse, die er zum Anmelden verwendet, in der Tabelle Benutzer gespeichert. Ich möchte auch eine Kopie ihrer primären E-Mail-Adresse in der Tabelle "Accounts" speichern, da diese Tabelle die E-Mail-Adressen dieses Benutzers speichert.Ruby on Rails: Wie speichern Sie Daten in zwei Tabellen nach der Erstellung eines Datensatzes in einem?

Ich habe nach dem versucht in meinem users_controller:

class UsersController < ApplicationController 

    def index 
    @users = User.all 
    end 

    def show 
    @user = User.find(params[:id]) 
    end 

    def new 
    @user = User.new 
    end 

    def edit 
    @user = User.find(params[:id]) 
    end 

    def create 
    @user = User.new(user_params) 
    if @user.save  
     session[:user_id] = @user.id 
     @account = Account.new(email: params[:primaryemailaddress], user_id: session[:user_id]) 
     redirect_to @user 
    else 
     render 'new' 
    end 
    end 

    def update 
    @user = User.find(params[:id]) 

    if @user.update(user_params) 
     redirect_to @user 
    else 
     render 'edit' 
    end 
    end 

    def destroy 
    @user = User.find(params[:id]) 
    @user.destroy 
    redirect_to users_path 
    end 

    private 

    def user_params 
    params.require(:user).permit(:title, :firstname, :surname, :housenumber, :street, :city, :postcode, :organisation, :primaryemailaddress, :password) 
    end 
end 

und die folgenden in meinem User Modell:

class User < ActiveRecord::Base 
    has_many :accounts 
    accepts_nested_attributes_for :accounts 
    validates :primaryemailaddress, presence: true 
    has_secure_password 
end 

So, wie Sie in der create Methode im users_controller sehen können, ich Ich versuche, einen neuen Datensatz in der Tabelle Konten zu erstellen, indem ich die primäre E-Mail-Adresse verwende, die der Benutzer auf dem Registrierungsformular angegeben hat.

Kann mir bitte jemand sagen, wo ich falsch liege?

Antwort

1

Bitte versuchen Sie es mit unter Modifikation

def create 
    @user = User.new(user_params) 
    if @user.save  
     session[:user_id] = @user.id 
     @account = Account.create(email: params[:user][:primaryemailaddress], user_id: session[:user_id]) 
     redirect_to @user 
    else 
     render 'new' 
    end 
    end 
+0

Das sofort gearbeitet, danke! –