Rails to_json:具有参数的方法

Cra*_*all 9 json ruby-on-rails

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

我如何将参数传递给to_json我目前使用的方法

objects.to_json(:methods => :owner)
Run Code Online (Sandbox Code Playgroud)

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

ava*_*tok 20

注意:注释适用于Rails 2.3,没有尝试过这个w/Rails 3.

我不相信你能用to_json的方式做到这一点,所以我认为你有两个选择:

1.通过调用一个方法来保存你的对象,在一个变量中存储正确的值,然后'owner'方法在to_json调用期间读取该变量.

2.在模型中覆盖as_json:

def as_json(options = {})
    json = super(options)
    json['owner'] = owner(options[:param_for_owner])
    json
end
Run Code Online (Sandbox Code Playgroud)

然后在你的to_json调用中传入:param_for_owner:

objects.to_json(:param_for_owner => 'foo')
Run Code Online (Sandbox Code Playgroud)

请注意,注入值的位置取决于ActiveRecord :: Base.include_root_in_json的配置方式.