2017-10-08 65 views
0

我可以在哪裏使用Devise gem更改驗證以保存?我發現這種形式:Devise Ruby on Rails中的build_resource和資源是什麼?

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

但我發現與此類似:

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 

+0

歡迎來到Stack Overflow!請閱讀[如何提出一個好問題](https://stackoverflow.com/help/how-to-ask)。你的問題應該是具體的,你的相關代碼應該[最小,完整和可驗證](https://stackoverflow.com/help/mcve)。 –

回答

0

設計是由與任何型號的工作,它不是強制性的要User。一個非常常見的例子是UserAdminUser

如果Devise被硬編碼爲您所示(User.new),這意味着它不會適用於其他模型,也不會讓您擁有更多模型登錄到您的webapp。知道的是,resource代表您已經添加devise到模型,這是在登錄你的情況:

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? 

由於它的使用resource.valid?,你只需要實現該模型UserAdminUser內的驗證,而不更改Devise中的任何代碼。