とんてき

Ruby, Ruby on Railsやその周辺技術を中心に。ときどき趣味のことも。

ruby on rails

CarrierWaveを使用している時のテストデータの準備法(FactoryBot編)

FactoryBotの基本的な使い方と同じですが、文字列と少しだけ異なります。 FactoryBot.define do factory :post do title "Sample Title" description "This is a sample description" # CarrierWageで使用しているカラム名をキーにする # 画像ファイルは「sp…

【CarrierWave + Heroku】でAWS S3に画像を保存しようとすると「HTTP 403」が返却される

HTTP 403とは HTTP の 403 Forbidden クライアントエラーレスポンスコードは、サーバーがリクエストを理解したものの、認証が拒否されたことを示します。 つまり、リクエスト自体は送られているけど、何らかの理由でアクセスが拒否されたということですね。 …

【Rspec】Shoulda Matchersを使用してspecをシンプルに書く

はじめに 「Shoulda Matchers」というGemを使うと、specをDRYに書けるという話です。例えば以下のようなnameのpresenceのバリデーションを確認するspecがあるとします。 # nameが未入力の時、無効な状態であること it "is not valid without a name" do us…

【Ruby on Rails】バリデーションメッセージが表示されない時の対処法

問題点 フォームから情報を入力し送信する際に、入力情報に不備があればバリデーションメッセージが表示されるはずが、 なぜか急に表示されなくなったので、その時の対処した内容のメモ。 デバッグやらなんやらで解決するまで丸1日はまってしまいました。と…

Railsのヘルパーメソッド「simple_format」について調べて見た

はじめに 「simple_format」とは、与えられた文字列を以下の条件で整形するメソッド。(らしい。。。)・文字列を<p>で括る ・改行は<br />を付与 ・連続した改行は、</p><p>を付与 1. simple_formatなし # 入力値 simple_formatのテストをします。 まずは改行を1度挟みます</p>…

画像アップロード機能「Active Storage」を使ってみた!

「Active Storage」とは Rails5.2から登場したgemで、ActiveRecordモデルへの紐付けや、 クラウドストレージサービス(AWS、GCP、Azure)へアップロードが非常に容易に行えるライブラリ。 現在は、画像アップロードには「CarrierWave」というgemが一番よく使…

Railsで論理削除を実装したい時は「paranoia」Gemを使おう!

はじめに このデータ(レコード)要らないと思って削除したはいいが、あとで戻したいなんてことありますよね? Railsチュートリアル等を見ると、destroyメソッドでレコードを物理削除したりしていますが、 完全に消すのは怖いという場合、論理削除をすること…

Ruby on Railsでデータの並び順を変えて表示する

1. はじめに 普段SQLを書く機会があるのですが、Railsを勉強し始めた時は逆にActiveRecordという概念がわかりにくかったです。 2. 並び順の変更 select * from post order by updated_at desc 例えば、上記のSQLは以下のようになります。 Post.order('update…

Ruby on Railsの環境変数管理にFigaroを使用する

初めに アプリケーションを開発している時に「username」や「password」、「api_key」等をどのように管理すればいいのか疑問に思ったのでメモ。 まずそれらの環境変数を直接設定ファイルに記入して、パブリックなリポジトリに公開するのは大切な情報が外部か…