gpt4 book ai didi

ruby-on-rails - ruby 装饰器和类 eval 之间有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 07:36:29 25 4
gpt4 key购买 nike

嘿,我目前正在从事一个集成 Spree 和 Refinery 的项目。 Spree 建议许多修改是使用他们所谓的装饰器完成的:

Refinery::Page.class_eval do

def autocomplete_label
title
end

attr_accessible :spree_taxon_id
has_one :spree_taxon

end

这很好用。但是直接打开类和直接添加方法有什么区别呢?

class Refinery::Page

def autocomplete_label
title
end

attr_accessible :spree_taxon_id
has_one :spree_taxon

end

我可以理解,第一个可以在类直到运行时才知道的时候使用(这个用例不需要)。还有其他区别吗?

最佳答案

我能想到的唯一区别是第一个版本会导致它 autoload现有的 Page 类,然后您的代码将在加载后添加。如果该类尚未加载,而您使用第二个版本,它可能会干扰 Spree 和 Refinery 期望的自动加载行为,并且该类可能无法正确加载。

关于ruby-on-rails - ruby 装饰器和类 eval 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13740163/

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