使用delayed_job创建操作

时间:2015-02-25 13:11:19

标签: ruby-on-rails ruby-on-rails-4 delayed-job strong-parameters

在我的控制器中,我试图将我的create方法移动到后台进程中,因为它需要花费太多时间。我做不到。

我的选择1:

首先,我为控制器创建了一个自我方法,所以看起来像这样:

  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

我不得不抛出current_app_user,因为self方法无法看到它,但我完全不知道如何处理我的link_share强参数,因为self方法没有看到 link_share_params 。我想我可以让这个选项工作,如果有人会指出我如何把强大的参数投入自我。控制器方法。

我的选择2:

然后我决定将整个动作移动到我的用户模型中,就像这样

位指示:

  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
    link_share = self.link_shares.build(**params**)
    link_share.save
  end

再次,强大的障碍的麻烦。如何将我的参数导入模型?我应该将它们作为参数链接吗?

任何建议表示赞赏

0 个答案:

没有答案