Ruby on rails 在ruby中以参数作为参数传递方法

Ruby on rails 在ruby中以参数作为参数传递方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,为了正确呈现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)]) 这不起作用。这可能吗?我认为,如果首先

为了正确呈现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不太熟悉。

从技术上讲,它不是为了给参数,而json只接受getter。但你可以按照这些思路做一些事情:

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?]

虽然我不会这样做,因为你必须为所有对象设置,这只是代码气味。

非常有效,谢谢!感谢@engineersmnky提醒我方法参数中的输入错误,并指控我复制了答案。我将这个类重命名为更合适的名称,因为任何读过它的人都看不到我调用的是
Object
,因为OP调用了他的var
@objects