gpt4 book ai didi

ruby-on-rails-3 - 用户注册时如何向用户添加 UserProfile? (设计,Rails 3)

转载 作者:行者123 更新时间:2023-12-02 00:36:45 24 4
gpt4 key购买 nike

我想覆盖 Devise 的 RegistrationsContollers 创建操作,以便在用户注册时,我可以将 UserProfile 模型与该用户相关联。

因此,按照 Devise Readme 中的指南,我覆盖了操作:

#File app/controllers/registrations_controller.rb:    
class Users::RegistrationsController < Devise::RegistrationsController
def create
# some code here..
self.user_profiles.build #Error (no method `user_profiles`)
current_user.user_profiles.build #Error (current_user is nil)
some other way???
end
end

#File routes.rb:
devise_for :users, :controllers => { :registrations => 'users/registrations' }

Devise 正在 users 表中创建一条记录,但我如何将 UserProfile 与该记录相关联?

我试过使用谷歌搜索,但就是无法正常工作!非常感谢任何帮助。

(我现在在 Rails 3.0.3 上使用 Devise 1.1.5)

已解决:

为他人的利益添加解决方案:

#File app/controllers/registrations_controller.rb:    
class Users::RegistrationsController < Devise::RegistrationsController
def create
super
@user.build_user_profile
@user.user_profile.some_data = 'abcd'
@user.save!
end
end

最佳答案

self 在此上下文中指的是 Controller 而不是模型。

此外,用户模型是否有很多 UserProfiles?否则,如果他们没有(即他们只有一个),那么您应该使用 @user.build_user_profile,而不是 @user.user_profiles.build

我还建议在模型级别而不是 Controller 级别执行此操作,使用诸如 before_createafter_create 之类的回调,即:

class User < AR
has_one :user_profile

after_create :build_profile

def build_profile
self.build_user_profile
...
end
end

关于ruby-on-rails-3 - 用户注册时如何向用户添加 UserProfile? (设计,Rails 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4302586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com