gpt4 book ai didi

ruby-on-rails - Rails : Skinny Controller vs. Fat Model,还是我应该让我的 Controller 厌食?

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:08 26 4
gpt4 key购买 nike

我知道之前已经回答过类似的问题 - 例如:

  • 逻辑应该往哪里走
  • 在哪里做某些任务等。

但我有一个更具体的问题 - 我应该在多大程度上采用这个公理:让你的 Controller 瘦,让你的模型胖!

这是一个例子:

例如,假设我有多个验证数据源。一个很好的例子是 VIN 号码 -我可以根据制造商数据源、DMV 数据源以及我的本地数据库对其进行验证,以查看我的记录。所以我有一个名为 Vin 和 vins_controller 的模型。在模型内部我有 5 种方法:

  • check_against_local_db
  • check_against_dmv
  • check_against_car_maker_1
  • check_against_car_maker_2 等

在我的 Controller 中与 REST 保持一致,在 Action 显示中 - 我有一个简单的 case 语句,它查看 params[:source],并基于指定的源 - 将调用特定的检查方法。

现在问题来了:我应该将控制调用哪个数据源的逻辑留在 Controller 中,还是应该将其移动到模型中,然后在 Controller 中只执行类似 check_vin(source, vin) 的操作?

我应该让我的 Controller 厌食吗?

编辑

我将其切换为@jay-godse 的官方回答(谢谢 - 当时这是一个很好的回答)。自 2010 年以来情况发生了很大变化,这个问题仍然有一些观点——所以希望这会为一些人指明正确的方向并帮助他们正确地组织代码。

Trailblazer gem很好地解决了问题中提出的问题。

最佳答案

古语有云,

Smart data structures and dumb code works a lot better than the other way around.

您所描述的一切都是关于一个数据与另一个数据的关系。这本身就是您的线索,即这些关系的逻辑(包括验证)应该在模型或数据库层中。

厌食症 Controller 是精心设计(智能?)数据的标志。我的经验告诉我,你在设计数据上投入的精力越多,你需要编写的代码就越少。

Controller 最擅长解析输入、调用适当的模型,然后格式化输出。

关于ruby-on-rails - Rails : Skinny Controller vs. Fat Model,还是我应该让我的 Controller 厌食?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2550376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com