我目前需要传递一些方法作为参数,以正确呈现json:
render json: @objects.to_json(methods: [:num_of_properties])
此语法当前有效。但是,我想通过另一种方法。此方法接受1个参数。
我认为这可以工作:
render json: @objects.to_json(methods: [:num_of_properties, :property_is_owned_by?(current_user)])
这不有效。这有可能吗?我认为如果首先可以将方法作为参数传递,则必须能够传递带有参数的方法。但是我不知道。我对Ruby不太熟悉。
答案 0 :(得分:1)
从技术上讲,它不打算将参数传递给_json只需要使用吸气剂。但是您可以按照以下方式做一些事情:
class ObjectClassOfYourChoice
attr_accessor :current_user
def property_is_owned_by?(user = nil)
user ||= current_user
# rest of your code
end
end
@objects.each do |object|
object.current_user = current_user
end
render json: @objects.to_json(methods: [:property_is_owned_by?]
尽管我不会那样做,因为您必须为所有对象进行设置,而多数民众赞成在仅设置代码。