Ruby to_json:方法参数

我在一个对象上使用to_json方法,并试图让:methods参数起作用。 我的模型(Drop)上有一个名为is_favorited_by_user? 。 此方法接受current_user的参数,然后检查该下拉是否被用户collections。 如何通过to_json方法传递此参数。

 render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user)) 

您可以将current_user属性添加到模型中,并在执行to_json之前设置它

  attr_accessor :current_user def is_favorited_by_user?(user=nil) user ||= current_user # rest of your code end @drops.current_user = current_user render :json => @drops.to_json(:methods => :is_favorited_by_user?) 

to_json采用的方法不是采用参数的方法,而只是“getter”方法。 (通常是基于db属性创建的。)

看这里的例子,没有传递参数:

http://apidock.com/rails/ActiveRecord/Serialization/to_json

如果你想做一些自定义的事情,你需要创建一个方法来构建你想要的信息的哈希,然后将该哈希转换为json。