【发布时间】:2017-01-11 01:08:01
【问题描述】:
TL;DR:我不知道如何组织我的逻辑域类。
我有“应用程序”模型,该模型位于应用程序的“核心”中,是我“进入”并操作其他模型的方式,例如:
@application = Application.find(params[:application_id])
@application.payment.update_attribute 'active', true
或
unless @application.report.status
或
@application.set_income(params[:income][:new_income])
所以模型 Payment、Income 和 Report 基本上是空的,因为我初始化了 Application 模型,然后我从那里“级联”做一些事情来改变“从属”模型。但现在 Application 模型有四十多个方法和 600 行代码。
我做得对吗?例如,当我想添加我喜欢做的新付款时:
payment = Payment.create params
在 Application 模型中,因为 ActiveRecord“知道”如何自动处理外键。我可以使用以下方法在付款模型中创建付款:
application = Application.find(application_id)
params[:application_id] = application.id
self.create params
但是这样一来,我需要手动设置 Application.id,这看起来更冗长且不优雅。
那么——如果我想减少我的应用程序模型——我应该在 APP/lib 目录中创建模块还是应该将方法移动到其他模型?
【问题讨论】:
-
棘手的问题,因为我们不知道这 40 种方法。有些可以转移到其他模型,有些可以转移到助手。您还可以在其他模型中构建方法来优雅地创建新支付等。
标签: ruby-on-rails ruby oop