【问题标题】:Where to put complex display logic for a Rails Model?在哪里放置 Rails 模型的复杂显示逻辑?
【发布时间】:2025-12-16 05:35:01
【问题描述】:

我有一个 Location#description 方法,它返回一个 (really) 长字符串。该字符串是人类可读的描述,它是根据Location 属性的值生成的。但是,这段代码又长又复杂,并且在我的模型中加入了很多“非业务”逻辑。

什么是最好的?将所有这些逻辑捆绑在助手中或创建LocationPresenter 类?如果我创建演示者,这样做有哪些指导方针?我应该使用Location 初始化它还是可以使用属性哈希?

【问题讨论】:

    标签: ruby-on-rails refactoring helpers presentation


    【解决方案1】:

    考虑将其重构为一个模块并将其包含到相应的模型中——前提是它具有任何业务逻辑组件。还要查看 helper_methods(它在控制器层和视图层都起作用),如果不是演示文稿,则只能将宏添加为助手。

    您称它为“复杂”并意识到它需要从您的模型中移出这一事实让我想知道它是否可以进行一些更符合 Rail 的 MVC 范式的重构。

    【讨论】: