提问人:rctneil 提问时间:5/1/2022 更新时间:5/1/2022 访问量:45
gem 中的 Overide 方法
Overide method in gem
问:
我正在使用 AwesomeNestedSet,并且在我的应用程序中有一个位置可以在模型实例上调用该方法。在某些情况下,返回 .这很好,但是在这样做的情况下,我需要它返回一个字符串。parent
parent
nil
root
我在整个应用程序的 3 个地方都有这个场景,所以想要一个集中的地方,我可以写这个。在我的模型中,我确实尝试过:Category
def parent
parent || 'root'
end
但当然,这只会让一切陷入循环。
我怎样才能获得此功能,但又不导致它循环?
尼尔
答:
2赞
BenFenner
5/1/2022
#1
这应该可以解决问题:
def parent
super || 'root'
end
评论
0赞
rctneil
5/13/2022
这非常有效!对于延迟,我们深表歉意。如果,我想(使用您的解决方案)也可以访问,在实例上,但不调用我们新的 overidden 版本。我该怎么做?parent
0赞
BenFenner
5/13/2022
我试图弄清楚如何做到这一点,但这可能是不可能的。毕竟,这是覆盖的想法。也许你可以多解释一下你为什么要这样做,或者你想完成什么?这可能会让事情更清楚。有可能用别名方法做一些事情,但我需要知道更多。
0赞
Alex
5/15/2022
@rctneil制作别名 ruby-doc.org/core-3.1.2/Module.html#method-i-alias_method
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]' %>
下一个:避免从模块调用私有方法
评论