Rails to_json:具有参数的方法

时间:2011-02-14 11:15:13

标签: ruby-on-rails json

我有一组拥有所有者方法的模型对象。此方法需要将一个参数传递给它才能工作。我需要将模型对象序列化为json并包含owner方法的值。

如何将参数传递到我目前使用

to_json方法中
objects.to_json(:methods => :owner)

包含所有者方法,但因为我没有传递参数,所以它不起作用。

1 个答案:

答案 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的配置方式。