Should you still pass only the object id when using ActiveJob?

3.1k views Asked by At

What are the pros and cons of doing the following in ActiveJob:

Option A:

# Controller
MyJob.perform_later(object.id)

# my_job.rb
def perform(object_id)
  object = Object.find(object_id)
  # do stuff
end

Option B:

# Controller
MyJob.perform_later(object)

# my_job.rb
def perform(object)
  # do stuff
end
1

There are 1 answers

2
Simone Carletti On BEST ANSWER

ActiveJob now uses the new Globalid library behind the scenes to serialize/deserialize an ActiveRecord instance, therefore you can now pass an ActiveRecord object.

I personally prefer to keep passing the ID as it makes the code more interoperable with other components and it doesn't tie my code indefinitely to a specific ActiveJob behavior, but this is more a personal choice.