ume

Ruby On Rails

rails7 本番環境ActiveRecord::InvalidForeignKey エラー 

前書き 開発環境では動くけど本番環境では動かなくエラーにハマったので記事に残します 環境 Rails 7.0.8.1 Ruby 3.2.1 Docker version 24.0.7 結論 dependent: :destoroyオプションをつける dependent: :destoroyオプションとは? ⇨親テーブルのレコードを…

rails7 開発環境でメールを送信機能実装

やりたいこと ECサイトで商品購入した際に購入商品の明細をメールで送りたい. 注意点: 今回はactive mailerの設定とどのようなメールが届くのかというのを開発環境で見ていこうと思います。実際のメールに届くわけではありません。 完成像 全体像 ①メーラー…

rails7 from_withのオプションの違い(model:オプションとurl:オプション)

結論 フォームのデータをコントローラーでparams[:モデル名][:キー]でデータを受け取るかparams[:キー]で受け取るかの違い modelオプション ⇨params[:モデル名][:キー]でデータを受け取る urlオプション ⇨params[:キー]でデータを受け取る modelオプション …

rails7 ルーティングの記載の順番で挙動が変わる件について

前書き 正しいルーティングを記載しているのに想定していたコントローラーに繋がらなくハマったので記事に残します。 ハマったこと new_admin_product(admin/products#new ) というprefixでリクエストを送るとBのadmin/productsコントローラーのnewアクショ…

rails7+esbuildでjsファイルを個別に読み込む

前書き rails6とrails7でJsファイルの読み込み方が変わったみたいです。その結果「rails7でjsファイルが読み込めない」というエラーにハマったので、同様のエラーに困っている方の参考にと記事をに残します。 実行環境 rails Rails 7.0.6 ruby 3.2.1 Docker …

rails6 has_manyのオプション( foreign_key)の意味と使い方

結論 外部キーを好きな名前で設定するためのオプション. 外部キーってなに?って方は以下を参照してください。 www.sejuku.net 外部キーはどのように名前が決まるの? (参照先の)モデル名の小文字_idになる ↓の場合 通常は、外部キー制約のカラム名を「user_…

Rails6の`update_column`と`update`:性能と使い方の違い

結論 特定の理由がない限りupdateメソッドを活用しよう。 update_column バリデーションをスキップ コールバックをトリガーしない updated_at タイムスタンプは更新されない 例 user = User.find(1) user.update_column(:name, "KOnaN") もし上記のコードでU…

rails6 devise confirmationコントローラーのshowアクションに反応させたいのになぜかusersコントローラーのshowアクションに反応する問題

前書き rails6でdeviseを導入しログイン、ログアウトを簡潔に実装したいと思いました。ただ想定しているコントローラーのアクションが反応しない。なぜか別のコントローラーのアクションを探しに行くという問題に直面しました。同様に悩んでいる方の参考にな…

rails6 has_manyとhas_oneの関連メソッド(関連データ登録)

前書き has_manyとhas_oneで同じ意味のメソッドでも少し書き方が違い. その違いを知らず何度もハマったので記事に残します。 関連データの登録 1対1の場合(has_one) 親(Car). 子(Engine) class Car < ActiveRecord::Base has_one :engine end class Engine <…

rails6 Deviseのconfirmable機能が邪魔してfakerで架空のデータ作成できない

前書き 今ユーザーを登録する際以下の流れで登録できるアプリを作成しています. ①ユーザー情報を仮登録⇨②ユーザーに本人確認のメール送信⇨③本登録 この流れのアプリにfakerでダミーデータを作成しようとした際下記のエラーが出力されたので忘却録として記事…

rails Gemの選定基準

前書き Gemの選ぶ際どういう点に気を付けてGem選びをするか曖昧なので具体化しまた振り返りたいので記事に残します。 前提選定する上で「これが正解」とかはないです。 全体像 やりたいことを明確にする どんなgemがあるかをリストアップ 選定基準を明確にす…

rails gem simple_calendarで2つのテーブルからデータを取得しカレンダーに表示する

初めに simple_calendarというgemをオリジナルアプリ(目標管理アプリ)に導入した際、カレンダーに1つのテーブルからデータを取得、表示するといったqiita記事はよく見かけたのですが「2つのテーブルからそれぞれデータを取得しカレンダーに表示させる」とい…

rails6 scopeメソッドと使い方

scopeメソッドとは? ⇨ActiveRecordの機能の一つで自分のオリジナルのSQLを作成できメソッドのように扱える。 ActiveRecordとは? ⇨メソッドのようにSQLが扱える機能。例find_byメソッドやcreateメソッドなど。 例 データベースからデータを取得する. Active…

rails6 jQuery radioボタンカスタマイズ

前書き rails6のradio_buttonタグでradioボタンを作成したところデフォルトのスタイルをクリックしたら文字の色が変わるようにスタイルを変更したいと思いました。色々苦戦したので記事に残します. 環境 Ruby 3.0.6 Rails 6.1.7.6 jquery: 3.7.1 変更前. . …

【Rails】dependent: :destroyとdependent: :delete_allの違い

結論 どちらもやってることは同じ ただ処理の仕方が違うだけ. ↓処理の違い :destroy :delete_all 処理の速さ 遅い 早い データベースの負荷 多い 少ない コールバックの有無 あり なし そもそもdependent:オプションって何? ⇨親テーブルのレコードが削除さ…

rails6 paramsオブジェクトを作成する方法

前書き 変更前 Parameters: {"authenticity_token"="[FILTERED]", "weekly_goal"=>"ダイエット", "start_time"=>"2023-09-21", "monthly_goal_id"=>"1", "user_id"=>"1", "commit"=>"登録", "id"=>"1"} ↓. 変更後 Parameters : {"authenticity_token"=>"[FIL…

データベース 文字数制限のバリデーションについて

前書き オリジナルアプリを開発中データベースに文字数制限のバリデーションをかけようとして最大文字数を何文字で設定するのがいいのかな?と疑問に思ったので将来の自分へと、また同様の疑問を抱いた人に有益になるように記事に残します。 結論 ⇨アプリの…

rails6 simple_calendarの使い方

前書き rails6でオリジナルアプリを作成中にカレンダーを表示したいと思いsimple_calenderというgemを知り使ってみると色々躓いたので今後「私と同じような人を減らしたいと思い」記事にします。 ちなみにこんな感じのカレンダーが作成できます↓ 説明するこ…

Jsonファイルとは?またメリットや利用シーンは?

前書き railsでオリジナルアプリを作成中にjsonファイルを使う必要が出たのですが『そもそもjsonファイルって何?』「メリットは?」「どういう時に使うの?」というった疑問が湧いたので記事に残します。 jsonって何? ⇨JavaScript Object Notationの略で「…

rails6 自作クラスのディレクトリの位置と設定

記事で説明しないこと クラスの作り方の詳細 全体像 自作クラスをどのディレクトリに保管しておくか 自作クラスを使用する上で便利な設定 1. 自作クラスをどのディレクトリに保管しておくか ⇨appディレクトリの中にlibディレクトリを作成しその中に自作クラ…

rails6 devise Errno::EHOSTUNREACH in Users::RegistrationsController#create エラー

エラー全文 ホストが見つかりませんというエラーです。 経緯. rails6でdeviseを導入しログインログアウト機能をサクッと実装しようとしました。devise導入後にアカウント登録しようとformの情報を送信後上記のエラーに遭遇しました。 結論 ⇨ config/environm…

rails6にdeviseを導入しアカウント登録後確認メールが送られてこない

対象者 deviseでアカウント登録した後に確認用メールが送られてこなくて困っている方 説明しないこと deviseのセットアップ 全体像(メール認証) ①メール認証を使える状態にする. ②Railsアプリでメール送信を行う為の設定(SMTPサーバーの設定)をする ①メール…

rails Missing host to link to! Please provide the :host parameter, set default_url_options[:host] エラー

#エラーの経緯 モデルのバリデーションのテストをしようとかきをuser_spec.rbに記載しました↓ it 'should be unique in name' do @user.save user = FactoryBot.build(:user, name: 'ゼルダ') expect(user).to be_invalid end rspecコマンドでテストを走らせ…

rails6 Webpacker::Manifest::MissingEntryErrorを解決する

結論 →node.jsのバージョンがwebpackerと噛み合ってない可能性があります。 なので私の場合node.jsをダウングレードするとrails serverが起動できるようになりました。 手元のpcでインストールされてるnodeのバージョン確認と現在使用されているバージョンの…

has_many :following, through: :active_relationships, source: :followed意味

対象者 rails tutorial14章取り組んでいる方 コードの意味 user.rb class User < ApplicationRecord has_many :following, through: :active_relationships, source: :followed end このコードを見て混乱したので理解を定着させたいので記事にします。 前…

rails model referenceとは?

対象者 referenceとはなんぞやという方 referenceとは? ⇨references型は新しく作成するテーブル(Post)のカラムに、作成済みのテーブル(User)を指定する場合に使います。要は新しいテーブル(Post)のカラムに既存のテーブル(User)の主キーの外部キー…

Rails 6でテーブルカラムの型不一致による外部キー追加エラーが発生した場合の解決方法

エラー経緯 rails tutorial13章を始め新しいカラム追加しようと以下のコマンドを実行しました rails generate model Micropost content:text user:references その後 rails db:migrate dbに反映させようとすると以下のエラーが出力されました。 rake aborted…

rails ログインの仕組みとremember meの仕組み(rails tutorial8章9章)

ログインの仕組み メールアドレスとパスワードでログインする仕様です。 まず送られてきたメールアドレス(メアド)をサーバーの中のsession(箱のようなイメージ)で受け取り そのsessionの中に格納されたメアドをfind_by(メアド)でdbからユーザーの情報…

rails Faker gem の概要と使い方

Faker gemとは ⇨架空のユーザーを作成してくれるgem、 導入方法 ①gemのインストール ruby '3.0.6' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main' gem 'rails', '~> 6.1.7', '>= 6.1.7.3' gem 'bcrypt', '3.1.13' gem 'b…

rails helperにメソッドを書く場合とmodelファイルにメソッドを書く場合の違い

そもそもhelperとは? ⇨Viewをよりシンプルに書くためのモジュール(部品を集めたようなもの)要はviewファイル内で使えるメソッド. helperの例(form_tagやlink_toなどがある) <%= form_with url: "パス" do |form| %> <% end %> どこにhelperメソッドを定義…