将用户 ID 链接到个人资料模型 - Ruby Rails

Linking a user id to a profile model - Ruby on Rails

我有一个基本的 rails 应用程序,其中包含设计设置和使用脚手架生成的配置文件模型。 Profile 模型是用户在注册后将在其中添加有关自己的详细信息的地方。除一个问题外,一切正常:用户创建配置文件后,新配置文件已创建,但未链接到该用户 ID。我已生成迁移以将 user_id 添加到配置文件。如何保存用户创建的配置文件并将其链接到当前登录的用户?

这是我当前的代码:

配置文件控制器:

class ProfilesController < ApplicationController
  before_action :authenticate_user!
  before_action :set_profile, only: [:show, :edit, :update, :destroy]

respond_to :html

def index
  @profiles = Profile.all
  respond_with(@profiles)
end

def show
  @profile = Profile.find(params[:id])
  respond_with(@profile)
end

def new
  @profile = Profile.new
  respond_with(@profile)
end

def edit
end

def create
  @profile = Profile.new(profile_params)
  @profile.save
  respond_with(@profile)
end

def update
  @profile.update(profile_params)
  respond_with(@profile)
end

def destroy
  @profile.destroy
  respond_with(@profile)
end

private
  def set_profile
    @profile = Profile.find(params[:id])
 end

def profile_params
  params.require(:profile).permit(:name, :civil, :email, :level, :employment_date, :mobile, :folder, :title, :internal, :nationality, :vacation, :work_email, :experience)
end
end

资料模型:

class Profile < ActiveRecord::Base
    belongs_to :user
    validates_associated :user
end

用户模型:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_one :profile
end

只要你用devise,应该就这么简单:

class ProfilesController < ApplicationController
  def create
    @profile = Profile.new(profile_params)
    @profile.user_id = current_user.id
    @profile.save
    respond_with(@profile)
  end
end

Devise 会为您创建该辅助方法。检查其 docs page.