ruby-on-rails – 覆盖as_json没有效果?

我试图在我的一个模型中覆盖as_json,部分是为了包含来自另一个模型的数据,部分是为了去除一些不必要的字段.从我所看到的这是Rails 3中的首选方法.为了保持简单,让我说我有类似的东西:

class Country < ActiveRecord::Base
  def as_json(options={})
    super(
      :only => [:id,:name]
    )
  end
end

而在我的控制器中

def show
  respond_to do |format|
    format.json  { render :json => @country }
  end
end

然而,无论我尝试什么,输出始终包含完整数据,字段不会被“:only”子句过滤.基本上,我的覆盖似乎没有开始,但如果我改变它,说…

class Country < ActiveRecord::Base
  def as_json(options={})
    {foo: "bar"}
  end
end

…我确实得到了预期的JSON输出.我只是弄错了语法吗?

最佳答案 这是一个错误,但没有奖品:

https://rails.lighthouseapp.com/projects/8994/tickets/3087

点赞