【问题标题】:Ruby on Rails: How to store data in two tables following the creation of a record in one?Ruby on Rails:如何在创建一个记录后将数据存储在两个表中?
【发布时间】:2016-11-05 08:27:22
【问题描述】:

我有两个数据库表用户和帐户,当创建一个新用户时,他们将用于登录的主要电子邮件地址存储在用户表中。我还想做的是将他们的主要电子邮件地址的副本存储在 Accounts 表中,因为该表将用于存储该用户的电子邮件地址。

我在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 方法中看到的那样,我正在尝试使用用户在注册表单上输入的主电子邮件地址在帐户表中创建一条新记录。

谁能告诉我哪里出错了?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 database-design


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2012-08-24
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      相关资源
      最近更新 更多