在Ruby中传递带有参数作为参数的方法

时间:2018-07-17 03:36:12

标签: 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)])

有效。这有可能吗?我认为如果首先可以将方法作为参数传递,则必须能够传递带有参数的方法。但是我不知道。我对Ruby不太熟悉。

1 个答案:

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

尽管我不会那样做,因为您必须为所有对象进行设置,而多数民众赞成在仅设置代码。