0

我在 ActiveRecord 类中覆盖 to_json:

def to_json(options={})
    puts options
    options.merge :methods => [:shortened_id, :quote]
    puts options
    super(options)
end

它没有对选项哈希做任何事情,即它没有改变它。

我通过调用它

obj.to_json

我打电话看它是否正在修改选项哈希并打印

{}
{}

另外,我用 as_json 试过这个,没有运气。to_json 和 as_json 之间有什么区别,为什么这不起作用?谢谢!

4

1 回答 1

2

Hash#merge返回合并的哈希:

合并(other_hash) → new_hash
合并(other_hash){|key, oldval, newval| 块} → new_hash

返回包含other_hash内容和hsh内容的新哈希。

所以你要:

options = options.merge :methods => [:shortened_id, :quote]

或使用merge!它就地修改哈希:

options.merge! :methods => [:shortened_id, :quote]
于 2012-11-28T04:22:23.820 回答