Answer the question
In order to leave comments, you need to log in
How to move create to background task?
I'm trying to move the create action to the background using delayed job, but I can't figure out how to act with strong params. First I tried to do everything in the controller:
def create
MyController.delay.create_and_email(current_app_user)
respond_to do |format|
format.js {}
end
end
def create_and_email(user)
@user = AppUser.find_by(id: user.id)
@link_share = @user.link_shares.build(link_share_params)
@link_share.save
end
def create
@user = current_app_user
@user.delay.create_and_email(link_share_params)
respond_to do |format|
format.js {}
end
end
def create_and_email(params)
link_share = self.link_shares.build(params)
link_share.save
end
Answer the question
In order to leave comments, you need to log in
Я даже никогда не задумывался, что можно придумать ставить в очередь экшены контроллеров. Это ж даже в определение не укладывается. Фоновая задача = очередь [конкретных] задач. А экше контроллера может, в зависимости от контекста, как стать произвольной задачей (или множеством произвольных задач), так и отсутствием задач.
Короче, самую тяжелую логику в модель. Желательно, в один ее метод. И в тот момент, когда контроллеру нужно будет сделать синхронный вариант, делаете его асинхронным. Все. Никаких стронг-парамс, хелперов, вьюх и т.д.
UPD. Модель есть, уже проще.
У вас в синхронном виде все работает для начала?
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question