gem 中的 Overide 方法

Overide method in gem

提问人:rctneil 提问时间:5/1/2022 更新时间:5/1/2022 访问量:45

问:

我正在使用 AwesomeNestedSet,并且在我的应用程序中有一个位置可以在模型实例上调用该方法。在某些情况下,返回 .这很好,但是在这样做的情况下,我需要它返回一个字符串。parentparentnilroot

我在整个应用程序的 3 个地方都有这个场景,所以想要一个集中的地方,我可以写这个。在我的模型中,我确实尝试过:Category

def parent
  parent || 'root'
end

但当然,这只会让一切陷入循环。

我怎样才能获得此功能,但又不导致它循环?

尼尔

ruby-on-rails 方法 覆盖

评论


答:

2赞 BenFenner 5/1/2022 #1

这应该可以解决问题:

def parent
  super || 'root'
end

评论

0赞 rctneil 5/13/2022
这非常有效!对于延迟,我们深表歉意。如果,我想(使用您的解决方案)也可以访问,在实例上,但不调用我们新的 overidden 版本。我该怎么做?parent
0赞 BenFenner 5/13/2022
我试图弄清楚如何做到这一点,但这可能是不可能的。毕竟,这是覆盖的想法。也许你可以多解释一下你为什么要这样做,或者你想完成什么?这可能会让事情更清楚。有可能用别名方法做一些事情,但我需要知道更多。
0赞 rctneil 5/18/2022
@benfenner我有以下方法:但是,我需要一种方法来检查数据库中的“previous_names”字段是否已填写,在我尝试使用该方法拆分它之前。这有意义吗?def previous_names super.split " | " if super end
0赞 BenFenner 7/24/2022
@rctneil我想我有点跟着你。除了用所有这些逻辑加载视图会有多糟糕之外,这(或类似的东西)会完成您要做的事情吗?<%= @category_instance.previous_names&.split(' | ') || '[no previous names]' %>