1

在 Rails 2.3 中,我有一个 Rails 引擎,它有自己的命名空间控制器,但它将使用主应用程序的模型。

但是,我想覆盖 ActiveRecord::Base#to_json 方法的默认行为,但仅在从 Engine 使用模型时

所以在引擎控制器中做类似的事情是合理的......

category.questions.each do |qst|
  # override ActiveRecord::Base#to_json somehow on the qst instance 
end

...如果在概念上是合理的,我将如何真正去做这样的事情?

如果不合理,那么仅针对引擎而不是主应用程序覆盖 ActiveRecord::Base#to_json 的最佳方法是什么?

谢谢,

保罗

4

1 回答 1

0

您可以使用以下方法执行此操作instance_eval

category.questions.each do |qst|
  qst.instance_eval do
    # do something here
  end
end

但是,我不确定这是否真的是您想要做的适当策略。一种更简单的方法是创建一个不同命名的方法并to_json在您的引擎中使用它来代替。

于 2012-11-06T15:30:44.707 回答