我在哪里可以使用 Devise gem 更改要保存的验证?我找到了这个表格:
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
end
最佳答案
Devise 可以与任何模型一起使用,User
不是强制性的。一个非常常见的例子是有 User
和 AdminUser
。
如果像您展示的那样将 Devise 硬编码为 (User.new
),则意味着它永远不会适用于不同的模型,也不会允许您拥有多个模型登录你的网络应用程序。知道这一点后,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?
,你只需要在模型 User
或 AdminUser
中实现验证,而不需要改变任何代码设计。
关于ruby-on-rails - Devise Ruby on Rails 中的 build_resource 和 resource 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46627016/