gpt4 book ai didi

ruby-on-rails - Rails 中的装饰器与助手?

转载 作者:行者123 更新时间:2023-12-03 16:07:22 25 4
gpt4 key购买 nike

我正在尝试了解装饰器模式。

据我了解,装饰器关注的是“呈现”模型的数据。它们将包含可以在 View 中调用的方法。

到目前为止,我会在 Helpers 或模型中抛出类似的方法(如果需要在模型实例上调用它们)。装饰器和助手之间的主要区别是装饰器与特定模型相关联,而助手可以是更通用的实用方法(如日期助手等)?

最佳答案

Rails 的(内置)组织代码的方式是:胖模型、瘦 Controller ,并将其余部分放入 Helpers(或 Concerns,它们是 Helpers,但用于 Controller /模型)。

助手的最大问题(IMO):

  • 它们可以在任何 View 中访问。是的,在您的应用程序的每个 Helpers 中定义的所有内容都可以在 View 中使用...
  • 它们是模块:它们不能被实例化,因此您调用它们的方法只提供参数。我更喜欢 OOP 版本:@user.full_name .

  • 装饰器:
  • 基本上,它们包装您的模型实例并提供用于显示目的的方法。装饰者不应该修改数据,只是对其进行排列、复数、翻译、添加逗号、用价格显示货币等。它装饰对象及其数据。
  • 它们与特定对象相关联(不仅是模型实例,您还可以将装饰器用于普通旧 Ruby 对象,例如 UserRole 或 Country)。

  • 使用装饰器模式将减少胖模型中的代码量(由 Rails 内置的做事方式强加):
  • 您的模型应该包含 业务逻辑 ,不再被显示逻辑污染。
  • 您的 Helpers 不再是随处可用的大堆方法,而是仅定义真正的全局帮助方法,例如 link_to_icon(icon_name, *args) , hours_from_datetime(datetime, format = '24') , menu_link(name, path, *args)
  • 关于ruby-on-rails - Rails 中的装饰器与助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45468184/

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