我有一个模型A
,该模型通过连接表B
与AB
有关联。在create
控制器的A
动作中,如果关联存在可选参数,则创建联接模型,否则,仅创建A
而没有AB
关联。 / p>
如果我将所有逻辑留在控制器中,则控制器会变得很胖,并且很难进行测试,并且逻辑不能轻易重用。如果我尝试将逻辑移至模型A
,那么我只能使用create_with_AB
或类似方法的随机方法。感觉不对。
感觉之间应该有一些层吗?我不确定是否存在用于处理这种情况的通用模式?
答案 0 :(得分:4)
您的示例似乎并不复杂,可以使用注释中提到的nested attributes完成。对于更复杂的东西,框架没有提供任何东西,您必须提出自己的抽象。
看看service objects
:
再次,因为它们是社区抽象,所以没有实现服务对象的标准方法-有些人将类与调用方法一起使用,某些将使用模块等。如何使用它们取决于干净代码的定义。