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?
Das sofort gearbeitet, danke! –