分类方法"呼叫"和返回值:如何获得它

时间:2018-03-21 15:14:24

标签: ruby-on-rails ruby

我对轨道上的红宝石/红宝石完全陌生,我只是在一个旧的现有项目上提供一种极端的帮助,所以,如果这是一个愚蠢的问题,请原谅自己;)

我有这堂课:

class MyClass
  def call
    category_id = context.params['category_id']
    tmp_context = context.clone

    ... stuff...

    content_id
  end
end

这样叫:

MyClass.call(params: params, current_user: current_user)

我需要得到的是函数的返回值," content_id"。 我已经尝试了几种方式,我可以从这个功能中获得它所引用的背景:

#<Interactor::Context params={...}, current_user=#<User ...>>

但没有关于返回值的提示。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

  

调用类方法是调用交互器的正确方法。该   hash参数转换为interactor实例的上下文。该   调用实例方法以及任何钩子   交互者可能会定义。最后,上下文(以及任何更改   归还它。)   https://github.com/collectiveidea/interactor

所以正确的方式来分配&#34;返回值&#34;将是:

class MyClass
  include Interactor

  def call
    category_id = context.params['category_id']
    tmp_context = context.clone

    # ...

    context.content_id = content_id
  end
end

MyClass.call.content_id # => some value

所以要打破Interactor模块(由interactor gem提供)。声明一个名为call的类方法,它使用&#34; context&#34;创建一个MyClass实例。作为一个论点。然后它调用实例上的call实例方法并返回上下文。

通过查看source code

,您可以更好地了解其工作原理