在RoR项目中,我正在为我的用户模型使用devise。
我的用户模型属于一个计划(基本、爱好、专业等)
我有一个RegistrationController来控制一个新用户的注册。如下所示:
class RegistrationsController < Devise::RegistrationsController当创建一个新用户时(在检查了可疑性、密码规则等之后),我想向应用程序的每个新用户添加基本计划(因为与信用卡有关的商业规则,等等)。
因此,基本的,我想要,为每个用户创建的东西,如:
#forget about this hard coding on Plan
@user.plan = Plan.find(1) 我不知道女巫的方法,我可以添加代码的这一部分。因为这是设计出来的。
有人能帮我吗?
发布于 2018-08-28 19:51:23
您的设计模型是由ActiveRecord (很可能)支持的,因此您可以访问所有的ActiveRecord生命周期挂钩,比如before_save。打开您的用户模型并输入:
class User < ActiveRecord::Base
#...
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
#...
before_save :assign_plan
def assign_plan
self.plan = Plan.find_by_name('basic').first
end
#...
end发布于 2018-08-28 19:51:28
您可以在before_save回调中添加User模型的计划,而不是在用户控制器中处理它。另一种方法是将plan_id添加到https://jacopretorius.net/2014/03/adding-custom-fields-to-your-devise-user-model-in-rails-4.html中提到的devise中。这将在保存用户模型时直接保存计划。
https://stackoverflow.com/questions/52065211
复制相似问题