ruby-on-rails – 在用户新设置注册时创建另一个模型
发布时间:2020-12-17 03:01:44 所属栏目:百科 来源:网络整理
导读:我正在使用 devise进行新的用户注册.在创建新用户之后,我还想为该用户创建配置文件. 我在registrations_controller.rb中的create方法如下: class RegistrationsController Devise::RegistrationsController def create super session[:omniauth] = nil unle
我正在使用
devise进行新的用户注册.在创建新用户之后,我还想为该用户创建配置文件.
我在registrations_controller.rb中的create方法如下: class RegistrationsController < Devise::RegistrationsController def create super session[:omniauth] = nil unless @user.new_record? # Every new user creates a default Profile automatically @profile = Profile.create @user.default_card = @profile.id @user.save end 但是,它没有创建新的配置文件,也没有填写@ user.default_card的字段.如何在每个新用户注册时自动创建新的配置文件? 解决方法
我会将此功能放入用户模型的before_create回调函数中,因为它本质上是模型逻辑,不会添加另一个保存调用,而且通常更优雅.
您的代码无法正常工作的一个可能原因是@profile = Profile.create未成功执行,因为它验证失败或其他原因.这将导致@ profile.id为nil,因此@ user.default_card为nil. 以下是我将如何实现这一点: class User < ActiveRecord::Base ... before_create :create_profile def create_profile profile = Profile.create self.default_card = profile.id # Maybe check if profile gets created and raise an error # or provide some kind of error handling end end 在您的代码(或我的代码)中,您始终可以使用简单的放置来检查是否已创建新的配置文件.即puts(@profile = Profile.create) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |