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_accessibles があり、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

/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 に答える
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

そのような何かが機能する可能性があります

EDITrole_given? : true を返すように定義するとas_role、ロール情報を取得するためにInheritResources使用されますas_role

また

controller do
  with_role :admin
end

動作しますが、この方法ではユーザーに与えられた役割を変更できません。

于 2013-05-21T12:30:20.707 に答える