我有一组拥有所有者方法的模型对象。此方法需要将一个参数传递给它才能工作。我需要将模型对象序列化为json并包含owner方法的值。
如何将参数传递到我目前使用
的to_json
方法中
objects.to_json(:methods => :owner)
包含所有者方法,但因为我没有传递参数,所以它不起作用。
答案 0 :(得分:20)
注意:注释适用于Rails 2.3,没有尝试过这个w / Rails 3。
我不相信你能用to_json的方式做到这一点,所以我认为你有两个选择:
1.通过调用一个方法将对象存储在一个变量中,然后在'to_json调用期间读取'owner'方法读取你的对象。
2.在模型中覆盖as_json:
def as_json(options = {})
json = super(options)
json['owner'] = owner(options[:param_for_owner])
json
end
然后在你的to_json调用中传入:param_for_owner:
objects.to_json(:param_for_owner => 'foo')
请注意,注入值的位置取决于ActiveRecord :: Base.include_root_in_json的配置方式。