Ruby on rails 我需要修改第三方创业板的代码,在哪里以及怎么做?

Ruby on rails 我需要修改第三方创业板的代码,在哪里以及怎么做?,ruby-on-rails,gem,Ruby On Rails,Gem,我正在建立一个基于RoR的网站,并使用第三方gem设计。我使用rakegems:unpack将设备解包到我的供应商/gems目录。现在,我发现Deviate提供的SessionController.create方法不适合我的要求,我想修改它 但我不知道什么是最好的方式: 直接修改sessioncontroller.create方法? 是否创建另一个SessionController并重写create方法? Ruby具有开放类,因此,您应该始终倾向于重新打开和重新定义所需的方法,因此重新打开Ses

我正在建立一个基于RoR的网站,并使用第三方gem设计。我使用rakegems:unpack将设备解包到我的供应商/gems目录。现在,我发现Deviate提供的SessionController.create方法不适合我的要求,我想修改它

但我不知道什么是最好的方式:

直接修改sessioncontroller.create方法? 是否创建另一个SessionController并重写create方法?
Ruby具有开放类,因此,您应该始终倾向于重新打开和重新定义所需的方法,因此重新打开SessionController并重写create方法将是一种方法


编辑gem会直接给您和将来必须接触代码的其他人带来维护负担。最终会有人忘记并更新这颗宝石。

@x1a4,谢谢。我还觉得最好不要直接编辑原始代码,但我不知道如何重新打开SessionController。我应该在app/controllers中创建sessions_controller.rb吗?你会怎么做?有几种方法,但我通常的方法是在config/initializers中创建一个初始值设定项。由于Rails加载类的方式不同,将其添加到应用程序/控制器并不能满足您的需要。如果您需要变得更复杂,我可能会在/lib下创建一个模块,然后将其包含到初始化器中所需的任何内容中。也许我应该找到一些关于定制设计的文章。你的答案仍然很有价值,谢谢