Ruby on rails 可以在Rails 4中动态创建实例吗?

Ruby on rails 可以在Rails 4中动态创建实例吗?,ruby-on-rails,integration,omniauth,Ruby On Rails,Integration,Omniauth,最重要的是,我有一个名为App_clients的模型,名为Twitter和Facebook的模型都继承了它: Model App def initialize(provider,access_token) end Model Twitter < App def initialize(provider, access_token) @client = Twitter::API.new(access_token) end Model Facebook < App def ini

最重要的是,我有一个名为App_clients的模型,名为Twitter和Facebook的模型都继承了它:

Model App
def initialize(provider,access_token)
end

Model Twitter < App
def initialize(provider, access_token)
  @client = Twitter::API.new(access_token) 
end

Model Facebook < App
def initialize(provider, access_token)
  @client = Facebook::API.new(access_token) 
end
Model应用程序
def初始化(提供程序、访问令牌)
结束
推特应用程序模型
def初始化(提供程序、访问令牌)
@client=Twitter::API.new(访问令牌)
结束
模型Facebook<应用程序
def初始化(提供程序、访问令牌)
@client=Facebook::API.new(访问令牌)
结束
我的问题是,是否可以在Apps_controller或Model App中使用一个方法来创建应用程序客户端的实例,具体取决于参数[:provider]? 我不想添加许多if或elsif来决定哪个是理想的客户

顺便说一句,我正在使用omniauth集成Twitter和Facebook的身份验证

非常感谢您的帮助

当然有

你可以用

klass = "#{params[:provider].to_s}".constantize
instance = klass.new # provide arguments here
例如,如果您收到一个带有提供者的请求:“Twitter”,它将返回Twitter类

只需谨慎地执行此操作,并验证您获得的提供程序参数,以便用户不会将其用于不好的目的