ruby-on-rails - 在方法参数中传递大对象是否可以?

标签 ruby-on-rails ruby

我正在开发一个 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/

相关文章:

ruby-on-rails - Rails 服务器正在运行,但没有将我带到我的项目中

ruby-on-rails - 在Rails 4中创建API-未初始化的常量Api::V1::UsersController

javascript - 为什么我的 js.erb 文件中没有工作链接

ruby-on-rails - Ruby NET::HTTP 在主体之前读取 header (没有 HEAD 请求)?

ruby-on-rails - bundle 安装和访问被拒绝错误的问题

ruby-on-rails - 在 graphql 分页中找到名称 'Connection' 的重复类型定义

ruby-on-rails - 远程ajax调用时是否可以使用redirect_to?

ruby-on-rails - 运行 `gem pristine --all` ... 将提高 Spring 的启动性能。 (实际上并没有这样做)

sql - MySQL 是否可以通过一次查询返回多个结果集?

ruby - 有没有办法用内存分配报告来分析 ruby​​ 1.9.2 脚本?