2017-10-08 1 views
0

Wo kann ich die Validierung zum Speichern mit dem Devise-Juwel ändern? Ich diese Form gefunden:Was ist build_resource und Ressource in Devise Ruby on Rails?

def create build_resource(sign_up_params) if resource.valid? super else render :new end end

Aber was ich finde, ist ähnlich wie diese:

def create 
@user = User.new(user_params) 

respond_to do |format| 
    if @user.save 
    format.html { redirect_to @user, notice: 'User was successfully created.' } 
    format.json { render :show, status: :created, location: @user } 
    else 
    format.html { render :new } 
    format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
end 

Ende

+0

Willkommen bei Stack Overflow! Bitte lesen Sie [wie Sie eine gute Frage stellen] (https://stackoverflow.com/help/how-to-ask). Ihre Frage sollte spezifisch sein und Ihr relevanter Code sollte [minimal, vollständig und verifizierbar] sein (https://stackoverflow.com/help/mcve). –

Antwort

0

Devise gemacht wird mit jedem Modell zu arbeiten, ist es nicht zwingend notwendig zu sein User. Ein sehr häufiges Beispiel ist User und .

Wenn Devise hardcodiert wurde, wie Sie es gezeigt haben (User.new), bedeutet dies, dass es nie für ein anderes Modell funktionieren würde und Sie nicht mehr als ein Modell in Ihre Webapp anmelden können. Zu wissen, dass, stellt die resource das Modell, das Sie devise hinzugefügt haben, und das ist bei der Unterzeichnung In Ihrem Fall:.

build_resource(sign_up_params) # will be the similar to user = User.new(sign_up_params) 
resource # will be an instance of User 
resource.valid? # will be the name as user.valid? 

Da es resource.valid? mit ist, man muss nur die Validierungen innerhalb des Modells implementieren User oder AdminUser ohne Ändern eines Codes in Devise.

Verwandte Themen