QA@IT

mailman gem でメールを受信し、データベースをStrongParameters を使用して更新する方法

1630 PV

メール受信をmailman gem を利用して作成中です。メールの受信はOKなのですが、受信した内容をデータベースへ出力するときに標準のStrong Parameters を使用することがうまくできません。
params.require(:message).permit(:title, :description) を実行するところで次のようなエラーとなります。
..... ERROR -- : private method `require' called for #<ActiveSupport::HashWithIndifferentAccess: ......
いろいろ試してるのですが解決できません。
何か使い方がおかしいのかどなたか教えていただけませんか。
ちなみに、mailman のルートに相当する部分(matcher)がparams をサポートしているので、そのあたりとの関係があると思っています。
mailmanサーバ (mailman_server.rb)のソースコードは

require 'rubygems'
require 'bundler/setup'
require 'mailman'

Mailman.config.poll_interval = 10

Mailman.config.pop3 = {
  server: 'pop.sample.com',
  username: 'test@sample.com',
  password: 'password',
  port: 110,                    
  ssl: false
}

Mailman::Application.run do

  to "%event%@sample.com" do
    begin
      UserMailer.receive(message)

      params[:message] = {}
      params[:message][:title] = message.subject
      params[:message][:description] = message.text_part.body.decoded
        @message = Message.new(params.require(:message).permit(:title, :description))

      if @message.save
        puts 'Message was successfully created.'
      end

    rescue Exception => e
      Mailman.logger.error "Exception occurred while receiving message:n#{message}"
      Mailman.logger.error [e, *e.backtrace].join("n")
    end
  end
end

また、メールを受信するメーラ(user_mailer.rb)のスクリプトは、次のようになっています。

class UserMailer < ApplicationMailer
  def receive(message)
  end
end
ウォッチ

この質問への回答やコメントをメールでお知らせします。