Ruby on rails 创建带有延迟作业的操作
在我的控制器中,我试图将我的create方法移动到后台进程中,因为它花费了太多的时间。我弄不好 我的选择1: 首先,我为我的控制器创建了一个self方法,看起来像这样:Ruby on rails 创建带有延迟作业的操作,ruby-on-rails,ruby-on-rails-4,delayed-job,strong-parameters,Ruby On Rails,Ruby On Rails 4,Delayed Job,Strong Parameters,在我的控制器中,我试图将我的create方法移动到后台进程中,因为它花费了太多的时间。我弄不好 我的选择1: 首先,我为我的控制器创建了一个self方法,看起来像这样: def create MyController.delay.create_and_email(current_app_user) respond_to do |format| format.js {} end end def create_and_email(user)
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
由于self方法看不到当前的应用程序用户,我不得不加入,但我完全不知道如何处理我的link\u share强参数,因为self方法看不到link\u share\u参数。如果有人能告诉我如何在自我中加入强大的参数,我想我可以让这个选项起作用。控制器方法
我的选择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
再一次,强参数的麻烦。如何将参数导入模型?我是否应该将它们作为论点进行链接
任何建议参数对于模型也应该没有问题,在第二个选项中抛出的错误是什么?作业应用程序用户#创建和发送电子邮件(id=15)失败(之前尝试了0次),使用ActiveModel::ForbiddenAttribute错误:ActiveModel::ForbiddenAttribute错误