簡體   English   中英

ActiveAdmin和Devise - skip_confirmation! 關於創造行動

[英]ActiveAdmin and Devise - skip_confirmation! on create action

我想調用user.skip_confirmation而他的帳戶是由admin在管理面板中創建的。 我希望用戶在注冊過程的后續步驟中確認他的帳戶,但不是在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 feature?

我看看答案,沒有人解決手頭的問題。 我用最簡單的方法解決它,如下所示。

before_create do |user|
 user.skip_confirmation!
end
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

工作,但這樣你就無法改變給定用戶的角色。

在/app/models/user.rb

  before_create :skip_confirmation

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM