to_json选项[:方法]不适用于Model.all

to_json选项[:方法]不适用于Model.all,json,ruby-on-rails-3,Json,Ruby On Rails 3,我有一个带有虚拟属性的模型,我希望在将该模型呈现为JSON时包含该属性。我已经做到了: def to_json(options={}) options[:methods] ||= []; options[:methods] << :date_string; super(options); end 但是索引操作不包括date\u字符串: def index @projects = Project.all respond_to do |format|

我有一个带有虚拟属性的模型,我希望在将该模型呈现为JSON时包含该属性。我已经做到了:

def to_json(options={})
  options[:methods] ||= []; 
  options[:methods] << :date_string;
  super(options);
end
但是索引操作不包括
date\u字符串

  def index
    @projects = Project.all
    respond_to do |format|
      format.html
      format.json { render :json => @projects }
    end
  end
有人知道这是否可行吗?我猜它在呈现集合时没有使用特定于模型的
来表示json


编辑:看起来我现在应该使用了-我看看这是否解决了这个问题

Edit2:我不认为
因为_json
在这里有什么区别。

看看,看起来您可以覆盖
可序列化的_hash
方法来包含您的虚拟字段:

def serializable_hash(options)
  super(options.deepmerge({:methods => :date_string}))
end  
请注意,这将把它添加到所有序列化格式(即JSON和XML)

如果这不起作用,请添加一些日志记录,以查看该方法是否在收集案例中被调用。

查看,您似乎可以覆盖
可序列化\u散列
方法以包括虚拟字段:

def serializable_hash(options)
  super(options.deepmerge({:methods => :date_string}))
end  
请注意,这将把它添加到所有序列化格式(即JSON和XML)


如果这不起作用,请添加一些日志记录,以查看该方法是否在收集案例中被调用。

正如json应该起作用一样。to_json将值转换为json并对其进行编码。正如_json在不编码的情况下进行转换一样。数组在不进行编码的情况下转换其对象,然后一次性对整个字符串进行编码,因此在序列化数组时将调用模型的as_json()方法:

我能够在本地复制您的问题,此解决方案对我有效:

def as_json(options={})
  options ||= {} # need this because to_json without options will pass nil to as_json
  options[:methods] ||= []; 
  options[:methods] << :date_string;
  super(options);
end
def as_json(选项={})
选项| |={}#需要这个选项,因为没有选项的to_json将把nil传递给as_json
选项[:方法]| |=[];

选项[:methods]应该可以使用。to_json将值转换为json并对其进行编码。正如_json在不编码的情况下进行转换一样。数组在不进行编码的情况下转换其对象,然后一次性对整个字符串进行编码,因此在序列化数组时将调用模型的as_json()方法:

我能够在本地复制您的问题,此解决方案对我有效:

def as_json(options={})
  options ||= {} # need this because to_json without options will pass nil to as_json
  options[:methods] ||= []; 
  options[:methods] << :date_string;
  super(options);
end
def as_json(选项={})
选项| |={}#需要这个选项,因为没有选项的to_json将把nil传递给as_json
选项[:方法]| |=[];

选项[:方法]谢谢你,我做到了。我以前尝试过使用json
,但没有使用为我排序的
选项{}
行。干杯:)谢谢你,成功了。我以前尝试过使用json
,但没有使用为我排序的
选项{}
行。干杯:)谢谢你,看起来也很有用。如果我需要在任何时候序列化为XML,我会再看一眼。谢谢你的帮助-看起来也很有用。如果我需要在任何时候序列化为XML,我将进行另一次查看。