3

我想user.skip_confirmation在他的帐户由管理员在管理面板中创建时打电话。我希望用户在注册过程的进一步步骤中确认他的帐户,但不是在create. 我唯一的想法是create在控制器中覆盖:

controller do
  def create
    user = User.new
    user.skip_confirmation!
    user.confirmed_at = nil
    user.save!
  end
end

attr_accessible问题是,对于标准用户和管理员,我有不同的 s,它可以工作,因为 ActiveAdmin 使用 InheritedResources:

attr_accessible :name, :surname
attr_accessible :name, :surname, invitation_token, :as => :admin

我改变后它不起作用create(它以前起作用)。我怎样才能做我想做的并且仍然能够使用这个:as => :admin功能?

4

3 回答 3

2

我看着答案,没有一个能解决手头的问题。我用最简单的方法解决它,如下所示。

before_create do |user|
 user.skip_confirmation!
end
于 2015-11-28T05:07:59.247 回答
0
controller do
  def create
    @user = User.new(params[:user].merge({:confirmed_at => nil}))
    @user.skip_confirmation!
    create! #or super
  end

  def role_given?
    true
  end

  def as_role
    # adapt this code if you need to
    { :as => current_user.role.to_sym } 
  end
end

类似的东西可以工作

编辑:如果您定义role_given?返回 true 和as_roleInheritResources将用于as_role获取角色信息

controller do
  with_role :admin
end

有效,但是这样您就无法更改给定用户的角色。

于 2013-05-21T12:30:20.707 回答
0

在您的 /app/models/user.rb

  before_create :skip_confirmation

  def skip_confirmation
    self.skip_confirmation! if Rails.env.development?
  end
于 2014-08-26T12:37:13.913 回答