🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails

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

Q&A

1回答

2712閲覧

[Rails] ActiveStorageを使った画像の保存でつまづいています

YUYUI

総合スコア0

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/12/07 09:04

前提・実現したいこと

簡単なsnsのアプリケーションを開発中の超初心者です。
投稿機能を実装しようとしてるのですが、ActiveStorageを使いツイッターのような画像と一緒に
文を投稿できるようにしたいです。

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

画像なしの文章だけの投稿でも同様にこのエラーが出ました ActiveSupport::MessageVerifier::InvalidSignature - ActiveSupport::MessageVerifier::InvalidSignature: app/controllers/tweets_controller.rb:15:in `create'

該当のソースコード

ruby

1@tweets = Tweet.create!(tweet_params)

試したこと

ネットで調べたところActiveStorageが原因のようでした
関係なさそうですが、受け取ったparamsに漏れはなかったです。

13: def create

=> 14: binding.pry
15: @tweets = Tweet.create!(tweet_params)
16: end

[1] pry(#<TweetsController>)> params
=> <ActionController::Parameters {"authenticity_token"=>"59J3vUhgPiBE3yJt1lHANgNUf6eUtFClVNnAOuymk+pRd3Qjh+yLf4VJhNc8g3876ClprDv9qSov+jICccKZbw==", "tweet"=>{"image"=>"sample1.png", "text"=>"sss"}, "commit"=>"投稿する", "controller"=>"tweets", "action"=>"create"} permitted: false>
[2] pry(#<TweetsController>)> tweet_params
=> <ActionController::Parameters {"image"=>"sample1.png", "text"=>"sss", "user_id"=>1} permitted: true>

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

勉強しはじめの超初心者です。
拙い質問で申し訳ございません。よろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

diff

1- @tweets = Tweet.create!(tweet_params) 2+ @tweets = Tweet.create(tweet_params)

create!、save! → レコードの作成・保存に失敗 → 例外を発生させる 
create、save → レコードの作成・保存に失敗 → nilを返す

Railsで感嘆符!を理解しよう(save, save!)

投稿2020/12/07 09:13

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YUYUI

2020/12/08 04:30

ご指摘ありがとうございます。早速直して再度実行してみました。 新たにエラー文が出ました param is missing or the value is empty: tweet パラメーターが空と言われたので確認してみたところ {"authenticity_token"=>"cc11St7bvGDQ11sLaZjxo7kfJxbJF0JcF01srklEWg6MXuWjVrOFbDEvmdRAcMdppyLCke6qhp+qGxhCrHzqqQ==", "image"=>"sample1.png", "text"=>"テスト", "commit"=>"投稿する", "controller"=>"tweets", "action"=>"create"} 漏れはなさそうなのですが自分では原因がわかりませんでした。
YUYUI

2020/12/08 07:25

ご指摘ありがとうございます。 確認してみました。 def tweet_params params.require(:tweet).permit(:image, :text).merge(user_id: current_user.id) end こちらはマイグレーションファイルになります class CreateTweets < ActiveRecord::Migration[6.0] def change create_table :tweets do |t| t.text :text, null: false t.references :user, null: false, foreign_key: true t.timestamps end end end こっちがモデルです belongs_to :user has_one_attached :image validates :text, presence: true カラムも漏れはなさそうです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問