Ruby on Rails: 如何在一个记录创建后将数据存储在两个表中?
Ruby on Rails: How to store data in two tables following the creation of a record in one?
我有两个数据库 tables 用户和帐户,当创建新用户时,他们将用于登录的主要电子邮件地址存储在用户 table 中。我还想在帐户 table 中存储他们的主要电子邮件地址的副本,因为此 table 将用于存储该用户的电子邮件地址。
我在 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_controller
的 create
方法中看到的那样,我正在尝试使用用户的主要电子邮件地址在帐户 table 中创建一条新记录已输入注册表。
谁能告诉我哪里出错了?
请尝试以下修改
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
我有两个数据库 tables 用户和帐户,当创建新用户时,他们将用于登录的主要电子邮件地址存储在用户 table 中。我还想在帐户 table 中存储他们的主要电子邮件地址的副本,因为此 table 将用于存储该用户的电子邮件地址。
我在 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_controller
的 create
方法中看到的那样,我正在尝试使用用户的主要电子邮件地址在帐户 table 中创建一条新记录已输入注册表。
谁能告诉我哪里出错了?
请尝试以下修改
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