我是Rails的新手,我最关心的是我的逻辑在哪里维持面向对象的设计,同时坚持MVC模式。所以我想这也是关于MVC的问题,因为它是关于Rails的。这是我的情景:
我的Rails应用程序中有一个导入功能,用于解析上传的Excel订单文件并导入其内容。当我编写函数时,我把它放在OrdersController中。我从一开始就知道这不是最好的地方,但我不确定我是否也想把它放在模型中。如果我把它放在模型中,它将作为一种类方法,例如订单:: import_from_excel,也许现在就可以了。但是如果任务会变得越来越复杂,那么它可能需要分成几种方法,模型就会混乱。在这种情况下,我认为将整个导入功能移动到自己的类中是合适的,例如OrderImporter在非MVC,面向对象的环境中完全正常。但是我会在lib中放置这样一个类?
答案 0 :(得分:1)
把它放在模型中的合理位置,所以我认为像Order::import_from_excel
这样的东西是个好主意。免责声明:我是胖模型,超薄控制器哲学的倡导者,所以其他人可能对此持不同意见。
但是,您应该将功能封装到lib/
中的单独类中,该类可以实例化并从import_from_excel
调用。这有助于测试性,减少耦合,并且如果将来出现从Excel导入其他内容的要求,可能会对您有所帮助。