首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用devise保存之前先设置模型

在使用devise保存之前先设置模型
EN

Stack Overflow用户
提问于 2018-08-28 19:45:18
回答 2查看 787关注 0票数 0

在RoR项目中,我正在为我的用户模型使用devise。

我的用户模型属于一个计划(基本、爱好、专业等)

我有一个RegistrationController来控制一个新用户的注册。如下所示:

代码语言:javascript
复制
class RegistrationsController < Devise::RegistrationsController

当创建一个新用户时(在检查了可疑性、密码规则等之后),我想向应用程序的每个新用户添加基本计划(因为与信用卡有关的商业规则,等等)。

因此,基本的,我想要,为每个用户创建的东西,如:

代码语言:javascript
复制
#forget about this hard coding on Plan
@user.plan = Plan.find(1) 

我不知道女巫的方法,我可以添加代码的这一部分。因为这是设计出来的。

有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-28 19:51:23

您的设计模型是由ActiveRecord (很可能)支持的,因此您可以访问所有的ActiveRecord生命周期挂钩,比如before_save。打开您的用户模型并输入:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 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中。这将在保存用户模型时直接保存计划。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52065211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档