如何在as_json
内调用params方法?
详细信息:
我正在使用as_json,它允许我调用方法,但是所有方法都应该没有参数,我如何使用它来调用带有params的方法?
示例:
Person对象的方法name
如下:
def name long=false
return long == true ? self.long_name : self.attributes["name"]
end
我有person_object,如何调用person_object.as_json(only: [:id, :name])
当我调用方法long=true
时,如何发送参数name
?
答案 0 :(得分:0)
简而言之,我认为你不能。
您需要添加一个没有参数的方法,而这个方法可以根据您的需要调用名称:
def long_name
name(true)
end
然后执行person_object.as_json(only: [:id, :long_name], methods: :long_name)
或者自己修改as_json
的回复:
person_object.as_json(only: :id).merge(name: person_object.name(true))
第二个选项具有您想要的name属性(而不是将其重命名为长名称),但有点麻烦。