大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Rails 4.2:使用无桌面模型的deliver_later,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的设置:
messages_controller.rb
class messagesController < ApplicationController def new @message = message.new end def create @message = message.new(params[:message]) if @message.valid? ContactMailer.contact_form(@messagE).deliver_later redirect_to root_path,notice: "message sent! Thank you for contacTing us." else render :new end end end
contact_mailer.rb
class ContactMailer < ApplicationMailer default :to => Rails.application.secrets['email'] def contact_form(msg) @message = msg mail(:subject => msg.subject,from: msg.email) end end
message.rb
class message include ActiveModel::Model include ActiveModel::Conversion ## Not sure if this is needed ## include ActiveModel::serialization extend ActiveModel::Naming attr_accessor :name,:subject,:email,:body validates_presence_of :email,:body validates_format_of :email,with: /\A([^\s]+)((?:[-a-z0-9]\.)[a-z]{2,})\z/i validates_length_of :body,:maximum => 1000 def initialize(attributes = {}) attributes.each { |name,value| send("#{name}=",value) } end ## Not sure if this is needed ## def attribtues {'name' => nil,'subject' => nil,'email' => nil,'body' => nil} end end
调用ContactMailer.contact_form(@messagE).deliver_later时出现的错误是:
ActiveJob::serializationError in messagesController#create Unsupported argument type: message Extracted source (around line #10): if @message.valid? ContactMailer.contact_form(@messagE).deliver_later redirect_to root_path,notice: "message sent! Thank you for contacTing us." else render :new
理想情况下,我希望这是一个后台进程.我会尽快添加像Sidekiq这样的东西,但我认为这是最好的事先修复这个序列化问题.
任何帮助是赞赏!谢谢 :)
class message ... include GlobalID::Identification ... def id ... end def self.find(id) ... end end
ActiveRecord将为您提供这些方法,但由于您没有使用它,您需要自己实现.决定您要存储记录的位置由您决定,但老实说,我认为通过使用ActiveRecord和下表可以更好地使用.
以上是大佬教程为你收集整理的ruby-on-rails – Rails 4.2:使用无桌面模型的deliver_later全部内容,希望文章能够帮你解决ruby-on-rails – Rails 4.2:使用无桌面模型的deliver_later所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。