在Rails 2.3中,我有一个Rails引擎,它有自己的命名空间控制器,但它将使用主应用程序的模型。
但是,我想覆盖ActiveRecord :: Base#to_json方法的默认行为,但仅限于从Engine 使用模型时。
所以在Engine控制器中做一些像......这样的事情是合理的。
category.questions.each do |qst|
# override ActiveRecord::Base#to_json somehow on the qst instance
end
......如果从概念上来说这是合理的,我怎么会真正去做这样的事情呢?
如果不合理,那么仅为引擎覆盖ActiveRecord :: Base#to_json的最佳方式是什么,而不是主应用程序?
谢谢,
保罗答案 0 :(得分:0)
您可以使用instance_eval
:
category.questions.each do |qst|
qst.instance_eval do
# do something here
end
end
但是,我不确定这实际上是否适合您想要做的策略。一种更简单的方法是制作一种不同命名的方法,并在引擎中使用它代替to_json
。