使用Rails,这种方法是否容易导致单独的并发请求使用错误的连接/数据库?
def find_user
@user= User.find_by_email(email)
unless @user
#search non_pro database
User.establish_connection("#{Rails.env}_non_pro".to_sym)
@user= User.find_by_email(email)
end
确保 User.establish_connection( “#{} Rails.env”。to_sym) 端
我想知道的是,如果第一个请求导致使用'non_pro'建立连接,第二个单独的请求是否会冒错误连接到'non_pro'的情况,如果它运行时第一个连接到'non_pro' “
答案 0 :(得分:0)
我做了一个小测试,发现如果你做User.establish_connection()
,这将为所有并发请求全局更改连接,因此使用错误的数据库可能会失败。
您可以做的是创建用户的子类
class NonProUser < User
self.table_name = "users"
establish_connection("#{Rails.env}_non_pro".to_sym)
end
然后,您可以使用NonProUser.find_by_email(email)
在其他数据库中查找您的用户。