我想在管理员面板中由管理员创建帐户时调用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
功能?
答案 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_role
,InheritResources
将使用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