gpt4 book ai didi

ruby-on-rails - 鸭子类型(duck typing)我们的 rails 模型以显示在 View 中

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:44 24 4
gpt4 key购买 nike

我正在尝试为此找出最佳实践。它应该相对简单明了,但我不确定。

我们有一些模型具有一些相似的属性,例如:name , description , image .但是,出于语义原因或其他原因,其中一些属性并非 100% 匹配:

一个Video模型可能有一个 title而不是 name , 和一个 Article模型可能没有 description而是有 content .

但是,我们确实希望在布局方面以一致的方式在 View 中呈现这些模型。例如,我们想要生成一个项目列表。每个项目显示:左侧的缩略图,标题(或标题)作为标题,下面的描述(或截断的内容)。缩略图将链接到对象页面等。

现在回答问题:

我们怎样才能用最少的 if 为 View “隐藏类型”这些对象?或 case子句? 理想情况下,我们将定义某种接口(interface)/模块并将其应用于每个模型,因此当我们调用 <something>.description 时它知道如何为每个对象获取它(直接调用 descriptioncontent 等)

是否有在 ruby​​/rails 中执行此操作的标准/推荐方法?

最佳答案

我会在每个模型中为通用名称创建别名。例如,如果您想在 View 中始终调用 description 方法,只需为该属性添加一个别名:

class Article < ActiveRecord::Base
alias_attribute :description, :content
end

这将使逻辑完全脱离您的 View ,并允许您通过一致的界面与您的数据库对象对话。

关于ruby-on-rails - 鸭子类型(duck typing)我们的 rails 模型以显示在 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24687050/

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