rails重定向问题

时间:2013-01-15 15:02:07

标签: ruby-on-rails

我正在尝试根据数据库中的值重定向。

例如,如果技术人员已登录,则应将其重定向到站点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我不知何故没有指向数据库中的数据

1 个答案:

答案 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?

它会返回真假