Calling function from worker with delayed job in rails

I have one function, that have been working in delayed job.

class TestDelay < ActiveRecord::Base
  def start_worker
tc = TestController.
     new
#Here calling that main function
  end
end

also i have one other class

class TestController < ApplicationController
  before_filter :filter1, :
  filter2
def follow_function
#Doing the main portion
  end

  protected
def filter1
end

  def filter2
end
end

In the class TestController has two filters, that will work on every action, there setting the instance variables on that filters, and using that in my follow_function. So the issues are when i am trying to call the follow_function from the delayed job method start_worker, i need to set the instance variables in that filters, this is the exact way to do this?

so what i tried something like that i put one function in TestController class like

def init_variables(names)
  #filter1(names)
  #filter2(names)
end

class TestDelay < ActiveRecord::Base
  def start_worker
class_name.init_variables(params)
  end
end

and i tried to passing arguments in before_filter, but its totally failed and getting weird. Is this the correct way to do this?

This is totally the wrong way of doing this.

You are breaking the MVC pattern.

Neither the worker or the model should access the controller functions.

You should put all the logic related to the delay job, inside the worker or in separated classes.

I like to have a worker classe inside the app folder /app/workers, and if a need more complex objects I put them inside the /lib folder

Thanks for the reply, here i meant that , can call the one method with **.delay, **

  class TestDelay < ActiveRecord::Base
def start_worker
tc = TestController.new
#Here calling that main function
end
end

this whole function works as a background job, that means **TestDelay.delay.****start_worker,** is there any issues?

Yes. You can do this.

But again. You should not instantiate a controller inside a Background job.