我正在尝试根据数据库中的值重定向。
例如,如果技术人员已登录,则应将其重定向到站点A,否则其他所有人都应重定向到站点B.
到目前为止我的尝试看起来如下
def create
@user_session = UserSession.new(params[:user_session])
@user = User.new(params[User.where(:username => @user_session.username)])
#@user = UserUser.where(:username => @user_session.username)
#@user = User.select("tech").find(@user)
#@user = User.new
respond_to do |format|
if @user_session.save
if @user.tech == 1
format.html { redirect_to '/tech/index', notice: 'Login Successful A Company' }
else
format.html { redirect_to :users, notice: @user.tech }
end
else
format.html { render action: "new" }
end
end
end
问题是if语句总是解析为else语句中的代码而不是else语句上面的代码。在这种情况下,@ user.tech是nil我不知何故没有指向数据库中的数据
答案 0 :(得分:0)
好的
尝试更改此行
@user = User.new(params[User.where(:username => @user_session.username)])
这里你做了一些奇怪的事情,我认为你应该收到一条错误信息。 @user只是内存中用户模型的新实例
我认为你需要这个
@user = User.where(:username => @user_session.username)]).first
但是,如果用户名不唯一,则存在安全问题。管理员可以与用户具有相同的名称,因此您应该执行类似
的操作@user = User.where(:id => @user_session.user_id)]).first
高科技? user.rb中的方法(模型) 我在数据库中猜测技术要么是1还是0?
class User
def tech?
tech == 1 #
end
end
现在你可以做到
@user.tech?
它会返回真假