【问题标题】:Where should I put my custom code when it doesn't fit into the model or controller?当我的自定义代码不适合模型或控制器时,我应该把它放在哪里?
【发布时间】:2012-03-05 20:26:49
【问题描述】:

我对 Rails 还很陌生,但我最关心的问题是在哪里放置我的逻辑以维护面向对象的设计,同时遵守 MVC 模式。所以我想这和关于 Rails 的问题一样多是关于 MVC 的问题。这是我的场景:

我的 Rails 应用程序中有一个导入函数,它解析上传的 Excel 订单文件并导入其内容。当我编写函数时,我把它放在 OrdersController 中。我从一开始就知道它不是放置它的最佳位置,但我也不确定是否要将它放入模型中。如果我把它放在模型中,它将作为一个类方法,例如Order::import_from_excel,也许现在就可以了。但是如果任务变得越来越复杂,它可能需要分成几个方法,模型就会变得杂乱无章。在那种情况下,我认为将整个导入功能移到它自己的类中是合适的,例如OrderImporter 在非 MVC、面向对象的环境中是完全正常的。但是我会将这样的课程放在哪里,在 lib 中?

【问题讨论】:

    标签: model-view-controller ruby-on-rails-3.1


    【解决方案1】:

    把它放在模型中是合乎逻辑的,所以我认为有像Order::import_from_excel 这样的东西是个好主意。免责声明:我是 fat model, slim controller 哲学的倡导者,所以其他人可能对此持有不同的看法。

    但是,您应该将功能封装到lib/ 中的一个单独的类中,该类被实例化并从import_from_excel 调用。这有助于可测试性,减少耦合,如果将来需要从 Excel 导入其他内容,这可能会对您有所帮助。

    【讨论】:

    • 谢谢!这很有意义。
    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 2014-01-04
    相关资源
    最近更新 更多