【发布时间】:2018-02-02 05:24:51
【问题描述】:
我有一个多个类继承的 ActiveRecord 类。
类有一个方法:
def self.doSomeEvaluation(*args)
#do some evaluation
end
我想为每个子类保存并添加一个将每个调用的参数设置为doSomeEvaluation。
我还希望它独立于该子类的当前实例。这个 Set 应该是 ActiveRecord 类的每个子类的独立的,并且应该保存在该实现的子类的不同实例之间。
当我尝试在doSomeEvaluation 调用的级别上保持集合时,它类似于:
def self.doSomeEvaluation(*args)
args.each do |arg|
@set.add(arg)
#do some evaluation
end
使用这个实现,我无法实现这种行为,因为在给定子类的实例之间,Set 的值会丢失。我也尝试将集合保留为类变量,但仍然无法实现上述行为:
def self.doSomeEvaluation(*args)
args.each do |arg|
@@set.add(arg)
#do some evaluation
end
也尝试使用 ActiveRecord 属性,但它作为一个常量工作,不允许这种行为。
关于如何实现这种行为的任何想法? 从逻辑的角度来看,这种行为是否可以接受?
【问题讨论】:
-
你在做memoization吗?
-
@SergioTulentsev 我认为类似的东西。在这篇文章中阅读它:justinweiss.com/articles/… 这似乎与我想要实现的目标相似。
-
这个“我无法实现这样的行为”究竟是什么意思?
-
@engineersmnky,我的意思是:在给定子类的实例之间,Set 的值丢失了。我用这些信息编辑了问题,谢谢!
-
@FilipeFreire:“从某种意义上说,在给定子类的实例之间,Set 的值会丢失。” - 你知道这句话,“一个sn-p的代码胜过一千个单词”吗? :)
标签: ruby-on-rails ruby activerecord