我有一个基本的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
答案 0 :(得分:3)
只要您使用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。