2014-05-16 47 views
1

的塞纳里奥是我有一个名为App_clients模型,并命名为Twitter和Facebook的机型无论是从它继承:是否有可能在Rails 4中动态创建实例?

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 

我的问题是,是,可能有Apps_controller或模型应用程序的方法来创建应用程序客户端的实例取决于params [:provider]? 我不想添加到很多if或elsif来决定哪个是客户端

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

非常感谢任何帮助

回答

1

当然有。

您可以使用

klass = "#{params[:provider].to_s}".constantize 
instance = klass.new # provide arguments here 

因此,举例来说,如果你收到提供商的请求:“推特”将返回Twitter的类。

请谨慎操作,并验证提供者的参数,以免用户因不良目的而使用它。另外,read the docs about constantize

+0

真的很感谢!它运作良好! – Perpherior

相关问题