ActiveAdmin和Devise - skip_confirmation!关于创造行动

时间:2013-05-21 11:14:09

标签: ruby-on-rails devise activeadmin confirmation skip

我想在管理员面板中由管理员创建帐户时调用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,并且它有效,因为ActiveAdmin使用InheritedResources:

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

在我更改create(之前有效)后,它无效。我怎样才能做我想做的事情,仍然可以使用这个:as => :admin功能?

3 个答案:

答案 0 :(得分:2)

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

before_create do |user|
 user.skip_confirmation!
end

答案 1 :(得分: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

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

答案 2 :(得分:0)

在/app/models/user.rb

  before_create :skip_confirmation

  def skip_confirmation
    self.skip_confirmation! if Rails.env.development?
  end