我在我的ActiveRecord课程中凌驾于to_json:
def to_json(options={})
puts options
options.merge :methods => [:shortened_id, :quote]
puts options
super(options)
end
它没有对选项哈希做任何事情,即它没有改变它。
我通过
来调用它obj.to_json
我调用puts来查看它是否正在修改选项hash并打印
{}
{}
另外,我用as_json尝试了这个,没有运气。 to_json和as_json有什么区别,为什么这不起作用? 谢谢!
答案 0 :(得分: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]