我对轨道上的红宝石/红宝石完全陌生,我只是在一个旧的现有项目上提供一种极端的帮助,所以,如果这是一个愚蠢的问题,请原谅自己;)
我有这堂课:
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 ...>>
但没有关于返回值的提示。
有什么建议吗?
答案 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。
,您可以更好地了解其工作原理