2013-05-21 5 views
2

user.skip_confirmation으로 전화를 걸고 싶습니다. 그의 계정은 admin 패널의 admin에 의해 생성됩니다. 나는 사용자가 등록 절차의 추가 단계에서 자신의 계좌를 확인하기를 원하지만 create에 계좌를 확인하지 말아야한다.ActiveAdmin 및 Devise - skip_confirmation! on action 만들기

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

:

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

문제는 내가 표준 사용자와 관리자에 대해 서로 다른 attr_accessible들, 그리고 ActiveAdmin을가 InheritedResources를 사용하고 있기 때문에, 작품입니다 : 내가 가진 유일한 아이디어는 컨트롤러에 create을 무시하는 것입니다 create을 변경 한 후에 작동하지 않습니다 (이전에 작동했습니다). 원하는대로 할 수 있고이 :as => :admin 기능을 계속 사용할 수 있습니까? 그런

답변

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 

뭔가

편집을 일할 수 : 당신이 진실하고 as_role 돌아 role_given?를 정의 할 경우, InheritResources이 역할 정보도

controller do 
    with_role :admin 
end 
을 얻을 수 as_role를 사용합니다

이 작동하지만이 방법으로는 역할. 당신의 /app/models/user.rb

before_create :skip_confirmation 

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

아니요,이 경우': as => : admin'이 작동하지 않습니다. 나는'보호 된 속성을 대량 할당 할 수 없습니까? '라는 메시지가 나타납니다. – ciembor

+0

흠 ... 이전에했던 것입니다.'create'를 오버라이드하지 않으면 작동합니다. – ciembor

+0

'슈퍼'에게 전화 하시겠습니까? – Orlando

0

손에서 문제를 해결한다. 아래에 나와있는 것처럼 가장 간단한 방법으로 해결합니다.

before_create do |user| 
user.skip_confirmation! 
end 
2
내가 대답을보고

과 없음에서