仅将对象ID或整个对象传递给方法

时间:2018-12-06 12:53:33

标签: ruby performance

我有一个连接到数据库的类Foo和一个方法bar,该方法接受一个带有两种可能的规范和实现的参数:

class Foo
  def bar(object_id)
    object = Object.find(object_id)
    object.do_something
  end
end

class Foo
  def bar(object)
    object.do_something
  end
end

我应该传递object.id并从数据库中加载对象,还是传递刚刚加载的整个object?哪种方法更好?对性能有影响吗?

1 个答案:

答案 0 :(得分:2)

如果您不是通过sidekiq或其他形式的序列化来执行此操作,则只需传递一个对象-无论如何它将最终存储在内存中,因此避免了不必要的数据库查询,并使您的类对{{1 }}实现。