0

ユーザーとアカウントの2つのデータベーステーブルがあります。新しいユーザーを作成するときに、ログインに使用するプライマリ電子メールアドレスがUsersテーブルに格納されます。私がやりたいことは、Accountsテーブルにプライマリ電子メールアドレスのコピーを保存することです。このテーブルはそのユーザーの電子メールアドレスを格納するために使用されます。Ruby on Rails:1つのレコードを作成した後に2つのテーブルにデータを格納する方法は?

私は私の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 

そして、私のUserモデルでは、以下の項目を

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

だから、あなたはusers_controllercreate方法で見ることができるように、私はユーザーが登録フォームに入力したプライマリ電子メールアドレスを使用して、アカウントテーブルに新しいレコードを作成しようとしています。

誰かが間違っている場所を教えてもらえますか?

答えて

1

修正以下としてみてください

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

すぐに働いた、ありがとうございました! –

関連する問題