Ruby On Rails
前書き 開発環境では動くけど本番環境では動かなくエラーにハマったので記事に残します 環境 Rails 7.0.8.1 Ruby 3.2.1 Docker version 24.0.7 結論 dependent: :destoroyオプションをつける dependent: :destoroyオプションとは? ⇨親テーブルのレコードを…
やりたいこと ECサイトで商品購入した際に購入商品の明細をメールで送りたい. 注意点: 今回はactive mailerの設定とどのようなメールが届くのかというのを開発環境で見ていこうと思います。実際のメールに届くわけではありません。 完成像 全体像 ①メーラー…
結論 フォームのデータをコントローラーでparams[:モデル名][:キー]でデータを受け取るかparams[:キー]で受け取るかの違い modelオプション ⇨params[:モデル名][:キー]でデータを受け取る urlオプション ⇨params[:キー]でデータを受け取る modelオプション …
前書き 正しいルーティングを記載しているのに想定していたコントローラーに繋がらなくハマったので記事に残します。 ハマったこと new_admin_product(admin/products#new ) というprefixでリクエストを送るとBのadmin/productsコントローラーのnewアクショ…
前書き rails6とrails7でJsファイルの読み込み方が変わったみたいです。その結果「rails7でjsファイルが読み込めない」というエラーにハマったので、同様のエラーに困っている方の参考にと記事をに残します。 実行環境 rails Rails 7.0.6 ruby 3.2.1 Docker …
結論 外部キーを好きな名前で設定するためのオプション. 外部キーってなに?って方は以下を参照してください。 www.sejuku.net 外部キーはどのように名前が決まるの? (参照先の)モデル名の小文字_idになる ↓の場合 通常は、外部キー制約のカラム名を「user_…
結論 特定の理由がない限りupdateメソッドを活用しよう。 update_column バリデーションをスキップ コールバックをトリガーしない updated_at タイムスタンプは更新されない 例 user = User.find(1) user.update_column(:name, "KOnaN") もし上記のコードでU…
前書き rails6でdeviseを導入しログイン、ログアウトを簡潔に実装したいと思いました。ただ想定しているコントローラーのアクションが反応しない。なぜか別のコントローラーのアクションを探しに行くという問題に直面しました。同様に悩んでいる方の参考にな…
前書き has_manyとhas_oneで同じ意味のメソッドでも少し書き方が違い. その違いを知らず何度もハマったので記事に残します。 関連データの登録 1対1の場合(has_one) 親(Car). 子(Engine) class Car < ActiveRecord::Base has_one :engine end class Engine <…
前書き 今ユーザーを登録する際以下の流れで登録できるアプリを作成しています. ①ユーザー情報を仮登録⇨②ユーザーに本人確認のメール送信⇨③本登録 この流れのアプリにfakerでダミーデータを作成しようとした際下記のエラーが出力されたので忘却録として記事…
前書き Gemの選ぶ際どういう点に気を付けてGem選びをするか曖昧なので具体化しまた振り返りたいので記事に残します。 前提選定する上で「これが正解」とかはないです。 全体像 やりたいことを明確にする どんなgemがあるかをリストアップ 選定基準を明確にす…
初めに simple_calendarというgemをオリジナルアプリ(目標管理アプリ)に導入した際、カレンダーに1つのテーブルからデータを取得、表示するといったqiita記事はよく見かけたのですが「2つのテーブルからそれぞれデータを取得しカレンダーに表示させる」とい…
scopeメソッドとは? ⇨ActiveRecordの機能の一つで自分のオリジナルのSQLを作成できメソッドのように扱える。 ActiveRecordとは? ⇨メソッドのようにSQLが扱える機能。例find_byメソッドやcreateメソッドなど。 例 データベースからデータを取得する. Active…
前書き rails6のradio_buttonタグでradioボタンを作成したところデフォルトのスタイルをクリックしたら文字の色が変わるようにスタイルを変更したいと思いました。色々苦戦したので記事に残します. 環境 Ruby 3.0.6 Rails 6.1.7.6 jquery: 3.7.1 変更前. . …
結論 どちらもやってることは同じ ただ処理の仕方が違うだけ. ↓処理の違い :destroy :delete_all 処理の速さ 遅い 早い データベースの負荷 多い 少ない コールバックの有無 あり なし そもそもdependent:オプションって何? ⇨親テーブルのレコードが削除さ…
前書き 変更前 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_calenderというgemを知り使ってみると色々躓いたので今後「私と同じような人を減らしたいと思い」記事にします。 ちなみにこんな感じのカレンダーが作成できます↓ 説明するこ…
前書き railsでオリジナルアプリを作成中にjsonファイルを使う必要が出たのですが『そもそもjsonファイルって何?』「メリットは?」「どういう時に使うの?」というった疑問が湧いたので記事に残します。 jsonって何? ⇨JavaScript Object Notationの略で「…
記事で説明しないこと クラスの作り方の詳細 全体像 自作クラスをどのディレクトリに保管しておくか 自作クラスを使用する上で便利な設定 1. 自作クラスをどのディレクトリに保管しておくか ⇨appディレクトリの中にlibディレクトリを作成しその中に自作クラ…
エラー全文 ホストが見つかりませんというエラーです。 経緯. rails6でdeviseを導入しログインログアウト機能をサクッと実装しようとしました。devise導入後にアカウント登録しようとformの情報を送信後上記のエラーに遭遇しました。 結論 ⇨ config/environm…
対象者 deviseでアカウント登録した後に確認用メールが送られてこなくて困っている方 説明しないこと deviseのセットアップ 全体像(メール認証) ①メール認証を使える状態にする. ②Railsアプリでメール送信を行う為の設定(SMTPサーバーの設定)をする ①メール…
#エラーの経緯 モデルのバリデーションのテストをしようとかきをuser_spec.rbに記載しました↓ it 'should be unique in name' do @user.save user = FactoryBot.build(:user, name: 'ゼルダ') expect(user).to be_invalid end rspecコマンドでテストを走らせ…
結論 →node.jsのバージョンがwebpackerと噛み合ってない可能性があります。 なので私の場合node.jsをダウングレードするとrails serverが起動できるようになりました。 手元のpcでインストールされてるnodeのバージョン確認と現在使用されているバージョンの…
対象者 rails tutorial14章取り組んでいる方 コードの意味 user.rb class User < ApplicationRecord has_many :following, through: :active_relationships, source: :followed end このコードを見て混乱したので理解を定着させたいので記事にします。 前…
対象者 referenceとはなんぞやという方 referenceとは? ⇨references型は新しく作成するテーブル(Post)のカラムに、作成済みのテーブル(User)を指定する場合に使います。要は新しいテーブル(Post)のカラムに既存のテーブル(User)の主キーの外部キー…
エラー経緯 rails tutorial13章を始め新しいカラム追加しようと以下のコマンドを実行しました rails generate model Micropost content:text user:references その後 rails db:migrate dbに反映させようとすると以下のエラーが出力されました。 rake aborted…
ログインの仕組み メールアドレスとパスワードでログインする仕様です。 まず送られてきたメールアドレス(メアド)をサーバーの中のsession(箱のようなイメージ)で受け取り そのsessionの中に格納されたメアドをfind_by(メアド)でdbからユーザーの情報…
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…
そもそもhelperとは? ⇨Viewをよりシンプルに書くためのモジュール(部品を集めたようなもの)要はviewファイル内で使えるメソッド. helperの例(form_tagやlink_toなどがある) <%= form_with url: "パス" do |form| %> <% end %> どこにhelperメソッドを定義…