0

我有两个模型。

Class ModelA < ActiveRecord::Base

  has_many :model_bs

end

Class ModelB < ActiveRecord::Base

  belongs_to :model_a

  def as_json(options = {})
    {
       :whatever => 'hello world'
    }
  end

end

当我调用 时model_a.as_json(:include => :model_b),我希望它返回一个包含所有 model_bs 的 json,它确实如此,但使用了我的 as_json 重新定义,它没有,因为它只使用默认值。有没有办法使用我自己的方法而不是原来的方法?谢谢

4

1 回答 1

0

在 Rails 3 中, as_json 方法调用 serializable_hash 来获取属性哈希。它们共享相同的“选项”参数。在您的情况下,覆盖 serializable_hash 会产生预期的结果。

def serializable_hash(options = {})
  {:whatever => 'hello world'}
end

但是,我的建议是,不要覆盖约定,而是对“super”的结果进行操作,就像:

 def serializable_hash(options = {})
  hash = super
  has[:name] = "hello world"
  hash
end
于 2012-11-01T05:57:34.343 回答