我正在尝试向 has_many 关系添加迟来的方法,我不想在构建时这样做(:has_many panties do ... end ),也不想在一定范围内这样做(我希望它在每个 has_many 中工作,或者就此而言,收集协会)。我已经尝试过:
- 在 ActiveRecord::Associations::CollectionAssociation 类中包含方法
- 在 ActiveRecord::Associations::CollectionProxy 类中包含方法
似乎没有任何效果。我只能跟踪未定义的方法将被传递给类,这不是我想要的。
我想要的结果是这样的:
class Man < ActiveRecord::Base
has_many :balls
end
class Woman < ActiveRecord::Base
has_many :breasts
end
# magic to insert methods
Man.new.balls.say_hi #=> "hi jerry"
Woman.new.breasts.say_hi #=> "hi jerry"
如此简单,却又如此困难。AR 中的这种方法代理使得调试变得非常困难。
编辑:
我的目的不是插入更多的业务逻辑,而是为集合添加组合,以便我提取有关集合的信息并在其他地方使用它。我重复一遍,这些信息与业务逻辑无关,而是与一些“隐藏”在集合关联中的活动记录信息有关,例如知道哪个类是子类、父类中的关联名称等。
然后,可以通过 #composite_object 之类的收集方法获得此复合对象,该方法将为我提供此信息。但是我不知道如何在不重新定义关联的情况下插入此方法。