我正在开发一个 Rails 应用程序,人们可以在其中进行测验。我有一个模型 BrowserGame
负责处理 Controller 逻辑( session 、重定向等)。目前,这是我的#initialize
方法:
class BrowserGame
def initialize(controller)
@controller = controller
end
end
在 Controller 中我有一个方法
class GamesController < ApplicationController
# actions
private
def browser_game
BrowserGame.new(self)
end
end
如您所见,我将整个 Controller 传递给 BrowserGame#initialize
(因此我可以使用 session 和其他操作)。这是一个好主意吗?是否有任何副作用,因为 Controller 实例是一个大对象?
最佳答案
是的,将大对象作为方法参数传递是可以的。您没有将对象放在堆栈上,只是指向它的指针。至于副作用——您在 BrowserGame
中对 @controller
所做的任何操作都会通过对 Controller 的任何其他引用看到,但这可能是您已经预料到的。
关于ruby-on-rails - 在方法参数中传递大对象是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017266/