0
給定兩個模型和控制器:Rails的as_json有兩個不相關的模型
蘋果
class Apples < ActiveRecord::Base
belongs_to :not_oranges
...
def as_json(options={})
opts = {:include => [:not_oranges]}
super(options.reverse_merge! opts)
end
end
橙子
class Oranges < ActiveRecord::Base
belongs_to :not_apples
...
def as_json(options={})
opts = {:include => [:not_apples]}
super(options.reverse_merge! opts)
end
end
搜索控制器
class SearchController < ApplicationController
a = Apples.search params[:q]
o - Oranges.search params[:q]
@results = {
:apples => a,
:oranges => o
}
respond_to do |format|
format.json { render :json => @results }
end
正如您所看到的,這兩個模型完全不相關,並且兩個模型的as_json
定義中的:include
選項都不相同。
所有工作正常,如果搜索查詢只命中蘋果或只打橘子,但一旦這兩個對象是不是空的,我得到:
undefined method `not_apples' for #<Oranges:0x00000004af8cd8>
看起來或者是兩個as_json
定義被合併,或者Oranges.as_json
正在被覆蓋Apples.as_json
。
這是預期的行爲?沒有使用類似RABL的東西有沒有乾淨的方法?我覺得這對我的需求來說會過度。
教我假設紅寶石是因爲它的高水平傳遞值!謝謝。 – Roganartu 2012-07-13 08:26:17