【发布时间】:2016-12-21 20:46:40
【问题描述】:
最让我困惑的一件事是在一个带有两个控制器的模型中进行验证。我有一个登录系统,用于注册和登录用户。两者都使用相同的模型,但都没有使用相同数量的 HTML 小部件。一个控制器包含密码、重新输入密码、用户名、名字和第二个名字等。第二个控制器仅使用用户名和密码字段。对于这种情况,您将如何在同一模型中进行验证?
谢谢
这里是注册新用户的控制器:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to '/cool'
else
@user = Newuser.new
@user.valid?
@user.errors.messages
render 'new'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :salt, :firstname, :secondname, :address, :postcode)
end
end
第二个控制器:
class LoginsController < ApplicationController
before_filter :authorize
def index
@rentals = Rental.where(user_id: current_user.id).limit(5)
@buys = Buy.where(user_id: current_user.id).limit(5)
@users = User.where(id: current_user.id)
@buyGames = BuyGame.where(user_id: current_user.id).limit(5)
end
def destroy
@user = User.find(params[:id])
@user.destroy
redirect_to '/logout'
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(account_params)
redirect_to '/cool'
else
render 'edit'
end
end
private
def account_params
params.require(:user).permit(:name, :email, :password, :salt, :firstname, :secondname, :address, :postcode)
end
end
这是我的模型:
class User < ApplicationRecord
has_secure_password
end
【问题讨论】:
-
请格式化问题,阅读这样格式化的代码很痛苦
-
对不起,伙计,没看到 :)。
-
那里,我为你做了;)
-
奇怪的登录控制器会破坏/更新用户
-
我的理解是,当用户注册和用户登录时,您需要在两种可能的情况下进行验证。当用户注册时,还有其他可用字段,例如名字、名字、重新输入密码。在第二种情况下,此值不可用。所以我会在他们验证之前检查他们的存在。
标签: ruby-on-rails