2013-05-17 5 views
5

मैं ऐसा करने का प्रयास करता हूं। दुर्भाग्यवश मुझे ओवरराइडिंग अपडेट में समस्याएं हैं और मुझे नहीं पता कि यह सही तरीके से कैसे करें। जिस तरह से मैं क्या है कि दूसरे स्थान पर:ActiveAdmin - पासवर्ड बदलने के बिना उपयोगकर्ता को संपादित करें

if params[:user][:password].blank? 
    params[:user].delete("password") 
    params[:user].delete("password_confirmation") 
end 
# ... 
user.save! 

तो मैं update

def update 
    if params[:user][:password].blank? 
    params[:user].delete("password") 
    params[:user].delete("password_confirmation") 
    end 
    super 
end 

ओवरराइड करने की कोशिश की लेकिन यह काम करता है नहीं करता है। मुझे अभी भी पासवर्ड इनपुट के पास can't be blank मिल गया है। अपेक्षित व्यवहार कैसे प्राप्त करें?

उत्तर

0

यह वह जगह है मेरे लिए काम करता है:

def update 
    @user = User.find(current_user.id) 
    params[:user].delete(:current_password) 
    if @user.update_without_password(params[:user]) 
     redirect_to .... 
    else 
     render .... 
    end 
end 

या

def update 
    if params[:user][:password].blank? && params[:user][:password_confirmation].blank? 
     params[:user].delete(:password) 
     params[:user].delete(:password_confirmation) 
    end 
    super 
end 

source

+0

मेरा समाधान 'मान्यताओं: पासवर्ड,: उपस्थिति => सत्य' को हटाने के बाद भी काम करता है। मुझे लगता है कि डिवाइस की मान्यताओं पर्याप्त हैं। – ciembor

9

अपने उपयोगकर्ता मॉडल के लिए इस कोड जोड़ें। यह आपके लिए चाल करेगा।

# User.rb 

private  
def password_required? 
    new_record? ? super : false 
end 
+4

उत्तर के रूप में चिह्नित किया जाना चाहिए – phyzalis

16

मैं @anonymousxxx का जवाब लेने के लिए और जोड़ने निम्नलिखित:

आप, आप नियंत्रक "उपयोगकर्ता" ओवरराइड कर सकते हैं के रूप में इस रेल व्यवस्थापक उपयोग कर रहे हैं:

#app/admin/user.rb 
controller do 
    def update 
    if params[:user][:password].blank? && params[:user][:password_confirmation].blank? 
     params[:user].delete("password") 
     params[:user].delete("password_confirmation") 
    end 
    super 
    end 
end 

आपको यह भी ध्यान रखना चाहिए कि, यदि आपके पास उपयोगकर्ता मॉडल सत्यापन हैं, तो निर्दिष्ट करें कि इस तरह के सत्यापन लागू होते हैं, उदाहरण के लिए:

validates :name, :email, presence: true 
validates :password, :password_confirmation, presence: true, on: :create 
validates :password, confirmation: true 

यह मुझे केवल पासवर्ड उपस्थिति को सत्यापित करने की अनुमति देता है जब मैं कोई नया उपयोगकर्ता बनाता हूं और अपना पासवर्ड बदलने के बिना अद्यतन करता हूं।

मुझे आशा है कि यह सहायक होगा।

संबंधित मुद्दे