加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用会话变量设置数据库连接

发布时间:2020-12-17 02:33:44 所属栏目:百科 来源:网络整理
导读:我知道我不想这样做,但我不知道我该怎么做. 我想根据哪个用户使用不同的数据库.所以我认为最好的方法是如果我在第一次用户登录时设置会话变量… 这是它的样子: class Stuff ActiveRecord::Base establish_connection( :adapter = "mysql2",:host = "127.0.0
我知道我不想这样做,但我不知道我该怎么做.
我想根据哪个用户使用不同的数据库.所以我认为最好的方法是如果我在第一次用户登录时设置会话变量…

这是它的样子:

class Stuff < ActiveRecord::Base
    establish_connection(
        :adapter  => "mysql2",:host     => "127.0.0.1",:username => session["dbuser"],:password => session["dbuserpass"],:database => session["dbname"])

这当然不起作用.有谁知道如何做到这一点?
谢谢.

解决方法

您可以将方法重写为:

class Stuff < ActiveRecord::Base
 def establish_connection_user(user,pass,database)
   establish_connection(
    :adapter  => "mysql2",:username => user,:password => pass,:database => database)
  end
end

并在您的控制器中:

class StuffController < ApplicationController
    def login #example 
      stuff = Stuff.new
      stuff.establish_connection_user(
        session[:dbuser],session[:dbuserpass],session[:dbname]) 
    end

这样您也可以封装它并使细节不那么明显.我也建议你
加密您的cookie,以便您没有如此暴露的凭据.你可以采取一个想法
从这个答案:

Storing an encrypted cookie with Rails

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读