Хотя этот ответ мало чем отличается от ответа Серджио Туленцева . Хочу добавить предложение по реализации. Поскольку вы, по-видимому, используете это в контроллере Rails.
Если вам это нужно в нескольких контроллерах и / или несколько раз в одном контроллере, подумайте о добавлении частного метода, который извлекает этот класс.
class ApplicationController < ActionController::Base
SESSION_CLASSES = {
'cbeweb' => CognifySession,
'idweb' => CognifySession,
}
SESSION_CLASSES.default = Session
SESSION_CLASSES.freeze
private
def session_class
# Assuming this is always based upon the params[:application] value.
# If not, pass the string as method parameter instead.
SESSION_CLASSES[params[:application]]
end
end
class SomeController < ApplicationController
def some_action
token = session_class.find_or_create(user).access_token
end
end