我在RoR项目中为我的User模型使用devise。
我的用户模型属于计划(基本,业余爱好,专业等)
我有一个RegistrationController来控制新用户的注册。像这样:
class RegistrationsController < Devise::RegistrationsController
创建新用户时(在检查重复性,密码规则等之后),我想向应用程序的每个新用户添加基本计划(由于与信用卡相关的业务规则等)>
非常基本,我想要为每个用户创建类似以下内容的内容:
#forget about this hard coding on Plan
@user.plan = Plan.find(1)
我不知道可以添加这部分代码的女巫方法。因为这是有意为之。
有人可以帮助我吗?
答案 0 :(得分:0)
您的设计模型由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
答案 1 :(得分:0)
您可以将计划添加到before_save
模型的User
回调中,而不是在用户控制器中进行处理。另一种方法是将plan_id
添加到https://jacopretorius.net/2014/03/adding-custom-fields-to-your-devise-user-model-in-rails-4.html中提到的设计参数中。保存用户模型后,这将直接保存计划