gpt4 book ai didi

ruby - 如何确定一个对象是否为 PORO?

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

当我查看一个对象(在终端或 Rails 控制台中)时,如何确定它是否是 PORO?

我理解这意味着一个对象只是 Ruby(不依赖于 Rails)。但我不明白在实际意义上。

例如,当我打印puts @a_form.inspect到控制台时,是不是PORO?

#<AForm:0x007fdbf9b33468 @a=#<A id: 1,...

我进行了大量谷歌搜索,但没有找到与非 PORO 对象相比更简单的示例答案。

谁能给出实际比较?

如果这是一个 super 新手问题,请提前致歉。

最佳答案

PORO(代表普通旧 Ruby 对象)和非 PORO 之间的区别不是技术上的。所有对象在技术上都是 Ruby 对象。

相反,术语 PORO 有时会在谈论像 Rails 这样的大型框架时使用,这些框架倾向于使用“大”、“复杂”的对象,如 ActiveRecord 模型来处理其大部分逻辑。这些大对象往往包含大量逻辑和(通常是隐含的)定义的行为和约定。

在谈论 PORO 时,通常这样做是为了与这些大对象区分开来,并鼓励使用更小的、特定的类/对象来构建您的业务逻辑,这可能看起来更简单。这些对象通常不需要像 ActiveRecord 模型那样由稳定存储支持,而只是包含动态数据并定义业务逻辑(您通常称之为应用程序的行为),而无需使用来自复杂框架的大量工具。

但同样,这不是一个严格的技术区分,甚至也不是一个有明确界限的区分。这是一种社会区别,通常旨在鼓励在单一框架之外进行思考。

至于术语本身,它相对较新并且(您现在可能已经猜到了)几乎没有任何实际的硬性含义。它最近流行起来,人们提示现在一些大型 Rails 应用程序往往具有的结构(例如精益 Controller 、胖模型,您将整个业务逻辑放入 ActiveRecord 模型中。因此,该术语主要用于区分这些胖模型。

关于ruby - 如何确定一个对象是否为 PORO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39129101/

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