質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
ActiveX

ActiveXは、Microsoft社が開発したプログラミング技術群の総称。特定の技術ではなく、さまざまな技術を指しますが、一般的にActiveXといった場合は「ActiveXコントロール」を指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

受付中

「ActiveSupport::MessageVerifier::InvalidSignature」 エラーを解決したいです

chichida
chichida

総合スコア0

ActiveX

ActiveXは、Microsoft社が開発したプログラミング技術群の総称。特定の技術ではなく、さまざまな技術を指しますが、一般的にActiveXといった場合は「ActiveXコントロール」を指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0回答

0評価

0クリップ

915閲覧

投稿2021/03/20 14:16

編集2022/01/12 10:55

前提・実現したいこと

Ruby on Railsを用いて保育園との連絡帳のようなシステムを作っています。
新規に連絡帳機能を作成する実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

フォームで各項目を入力し、連絡帳を作成しようとすると下記のエラーメッセージが表示されます。

ruby

ActiveSupport::MessageVerifier::InvalidSignature 【該当箇所】 def create @contact = Contact.create(contact_params)  #この部分がハイライトされています if @contact.save redirect_to root_path else

Gyazo画像

該当のソースコード

ruby

【controllers/contacts_controller.rb】 ※必要と思われる箇所のみを抜粋しています def new @contact = Contact.new end def create @contact = Contact.create(contact_params) if @contact.save redirect_to root_path else render new_contact_path end end private def contact_params params.require(:contact).permit(:image, :group_id, :last_name_c_j, :first_name_c_j, :last_name_c_k, :first_name_c_k ).merge(parent_user_id: current_parent_user.id) end

ruby

【models/contact.rb】 ※必要と思われる箇所のみを抜粋しています belongs_to :parent_user has_one_attached :image

ruby

【views/contacts/new.html.erb】 <div class="form__wrapper"> <%= form_with(model: @contact, local: true) do |f| %> <%= render 'error_messages', model: f.object %> <%= render 'form', model: f.object , locals: { contact: @contact } %> <% end %> </div>

ruby

【views/contacts/_error_messages.html.erb】 <% if model.errors.any? %> <div class="error-alert"> <ul> <% model.errors.full_messages.each do |message| %> <li class='error-message'><%= message %></li> <% end %> </ul> </div> <% end %>

ruby

【views/contacts/_form.html.erb】 <div class="form__wrapper"> <h2 class="page-heading">新規連絡帳の作成ページ</h2> <%= form_with(model: @contact, local: true) do |f| %> <%= render 'error_messages', model: f.object %> <div class="field"> <%= f.label :group_id, "お子さんの組" %><br /> <%= f.collection_select(:group_id, Group.all, :id, :name, {}, {class:"select-box", id:"class"}) %> </div> <div class="field"> <%= f.label :last_name_c_j, "お子さんの名前(名字)" %><br /> <%= f.text_field :last_name_c_j %> </div> <div class="field"> <%= f.label :first_name_c_j, "お子さんの名前(名前)" %><br /> <%= f.text_field :first_name_c_j, class: :form__text %> </div> <div class="field"> <%= f.label :last_name_c_k, "お子さんの名字(カナ)" %><br /> <%= f.text_field :last_name_c_k %> </div> <div class="field"> <%= f.label :first_name_c_k, "お子さんの名前(カナ)" %><br /> <%= f.text_field :first_name_c_k, class: :form__text %> </div> <div class="field"> <%= f.label :image, "お子さんの写真" %><br /> <%= f.file_field :image %> </div> <div class="actions"> <%= f.submit "連絡帳を作成する", class: :form__btn %> </div> <% end %> </div>

試したこと

pry-rails導入しparamsを確認しました

ruby

43: def create => 44: binding.pry 45: @contact = Contact.create(contact_params) 46: if @contact.save 47: redirect_to root_path 48: else 49: render new_contact_path 50: end 51: end [1] pry(#<ContactsController>)> params => <ActionController::Parameters {"authenticity_token"=>"XXXXXXXXXXXXXXXXXXXXXXXXX==", "contact"=>{"group_id"=>"2", "last_name_c_j"=>"子供名字いち", "first_name_c_j"=>"子供名前いち", "last_name_c_k"=>"コドモミョウジイチ", "first_name_c_k"=>"コドモナマエイチ", "image"=>"child_1.jpg"}, "commit"=>"保存する", "controller"=>"contacts", "action"=>"create"} permitted: false> [2] pry(#<ContactsController>)> contact_params => <ActionController::Parameters {"image"=>"child_1.jpg", "group_id"=>"2", "last_name_c_j"=>"子供名字いち", "first_name_c_j"=>"子供名前いち", "last_name_c_k"=>"コドモミョウジイチ", "first_name_c_k"=>"コドモナマエイチ", "parent_user_id"=>1} permitted: true> [3] pry(#<ContactsController>)> @contact => nil

記述ミスがないかの確認をしました

ストロングパラメータなどのカラム名に記載ミスがないかなどの確認を行いました。

考察

エラーメッセージからActiveStorageが原因か推測し、様々な検索を行ったのですが解決方法を見つけることができませんでした。

補足情報(FW/ツールのバージョンなど)

  • rails (6.0.0)
  • active storage (6.0.3.5)

学習を始めたばかりの初学者のため、質問に不備などありましたら申し訳ございません。
また、必要な項目が抜けているなどありましたら、お手数ですが、ご指摘いただけると助かります。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

winterboum

2021/03/21 00:08

MessageVerifier::InvalidSignature ですから tokenとかが正しくないということのようです。 「Raises InvalidSignature if the message was not signed with the same secret or was not Base64-encoded.」 よく有るのは authenticity_token をミスった時ですが、その場合この例外が立った経験がないので ?? また、普通にやっていればauthenticity_tokenをミスることは無いので ?? その例外が立つまでのlogみてなにかありませんか
chichida

2021/03/21 01:10 編集

winterboumさん ご回答頂きましてありがとうございます! ターミナルのログは下記のようになっており、authenticity_tokenはミスっていないかと思われました。 また、『SELECT `parent_users`.* FROM `parent_users` WHERE `parent_users`.`id` = 1 LIMIT 1』からparent_usersコントローラー(決済機能を実装した際に追加したカード情報の詳細表示や、マイページへのリンクなどを記述したコントローラー)のidが競合して登録ができないかと推察し、contorollers/parent_users_controller.rbのクラス名をParentUsersControllerからCardUsersControllerへ修正し、ファイル名もparent_users_controller.rbからcard_users_controller.rbに修正し、ローカルサーバーの再起動を実施し、確認を行いましたが、変化はありませんでした。 【ターミナルのログ】 app/controllers/contacts_controller.rb:44:in `create' Started POST "/contacts" for ::1 at 2021-03-21 09:48:47 +0900 Processing by ContactsController#create as HTML Parameters: {"authenticity_token"=>"HgyEpWV3eDUXZDSCRArVMTjEHB6u1h2x1/Zd3NiPbdsUhBvfPAR0mdOZKoBw6fWs+Fvsk+pBiFoDjijCY8Bueg==", "contact"=>{"group_id"=>"2", "last_name_c_j"=>"子供名字いち", "first_name_c_j"=>"子供名前いち", "last_name_c_k"=>"コドモミョウジイチ", "first_name_c_k"=>"コドモナマエイチ", "image"=>"child_1.jpg"}, "commit"=>"連絡帳を作成する"} ParentUser Load (0.5ms) SELECT `parent_users`.* FROM `parent_users` WHERE `parent_users`.`id` = 1 ORDER BY `parent_users`.`id` ASC LIMIT 1 (0.1ms) BEGIN ↳ app/controllers/contacts_controller.rb:44:in `create' ParentUser Load (0.3ms) SELECT `parent_users`.* FROM `parent_users` WHERE `parent_users`.`id` = 1 LIMIT 1 ↳ app/controllers/contacts_controller.rb:44:in `create' (0.1ms) ROLLBACK ↳ app/controllers/contacts_controller.rb:44:in `create' Completed 500 Internal Server Error in 8ms (ActiveRecord: 1.0ms | Allocations: 5513) ActiveSupport::MessageVerifier::InvalidSignature (ActiveSupport::MessageVerifier::InvalidSignature):

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

ActiveX

ActiveXは、Microsoft社が開発したプログラミング技術群の総称。特定の技術ではなく、さまざまな技術を指しますが、一般的にActiveXといった場合は「ActiveXコントロール」を指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。