0

私は2つのモデルを持っています。

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

しかし、私の提案は、規則を上書きする代わりに、次のような「スーパー」の結果を操作することです。

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