DB関係
ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita 上記リンクの記事を何度か読んだことがあるのですが、 そもそもinner joinやouter joinについてよくわかっていなかったため、「includesしとけば万能そう」という理解しかできておりませ…
本番環境のデータをステージングへ入れる必要があり、方法を調べました。 実際には違うやり方の方が良いとの判断となり、この方法でステージングにデータを入れることはしなかったのですが、その方法について書いておきます! 方法 1.本番データをローカルへ…
あるデータを取得する必要があり、コンソールでスクリプトを実行しておりました。 すると、AWS RDSのProcessor load が90%を超えているというアラートが何度も鳴ってしまいましたw OPさんにも心配をさせてしまいたした。 その時のスクリプトが以下です。 ids…
発生した問題 Jobで以下のようにクライアントのidを取得している部分に対して、"今日の日付より以前の契約をしている"という条件も足したいと思いました。 client_ids = invoice_build.billing_closing_date.contracts.with_status(:actived).pluck(:client_…
テストが実行できなくなってしまい、焦ることがありました。 ターミナル再起動しても相変わらずテストが実行されないままでした。 rake db:resetしようと試みてもエラーでリセットできませんでした。 しかし、ログをたどっていったところ、どうやらポスグレ…
起こった問題 PG Commanderというポスグレを可視化してくれるアプリを使いたかったのですが、ある日突然、自動で接続してくれなくなってしまっておりました。 自分で各項目を入力し接続を試みたのですが、上手くいかず困っておりました。。。 解決法 Portを…
Herokuの本番DBの内容をローカルに持ってくる方法を教えていただきました!! これは便利!!と感動したくので書き留めておきます。 以下のように、 heroku pg:pull herokuのDB名 ローカルDB名 --app アプリ名 とすると取得できます。 $ heroku pg:pull hero…
テストデータベースだけリセットしたい!と思うことがありました。 調べてみたところ、以下の手順でテストデータベースをリセットできるようでした! ①データベースをtestに切り替える $ bin/rails db:environment:set RAILS_ENV=test ②データベースを消す $…
menuテーブルが持っていたimageカラムの値を、menus_imagesテーブルのimageカラムに移すrakeタスクを作りました。 rakeタスクは初めて作ったので、手順を書き留めておきます。 タスクを生成する 以下のコマンドを打つと、タスクがlib/tasks配下に生成されま…
問題 ransackで oooo/oo/oo から xxxx/xx/xx までというふうに日付検索ができるようにしていたのですが、 そのままだと xxxx/xx/xx の部分の時間が00:00:00となってしまう事で、指定した日付の前日までのデータしか取得できませんでした。 2019-03-01から201…
userモデルとtaskモデルに関して、1対多のアソシエーションを組んでおり、 以下のようにビューでeach構文の中でアソシエーションを使ってuserのtasksの数を表示させておりました。 app/views/admin/users/index.html.slim div.fontsize_midium.margintop_bi…
テストデータでtitleカラムにindexを貼った時・貼ってない時の検索スピードを比較したいと思い、以下のようなコードを書いてみました。 spec/models/task_spec.rb require 'rails_helper'require 'benchmark'RSpec.describe Task, type: :model do describe …
コミュニティ開発しているプロジェクトで、githubログインを実装してくださったプルリクを確認しようと思い、ローカルにプルリクの内容を持ってきて確認しようとしました。 そしたらpostgresqlでデータベースが作成できないエラーにぶつかりました。。。 そ…
以前OSをアップデートした時にも出現した、mysqlが入らないエラーが再度出現しました。 以下はエラー文です。 ~/p/r/banken_admin_blog (master|✚1…) [1] $ bundle install Your Gemfile lists the gem kaminari (>= 0) more than once. You should probably…
先ほど、データベースを消そうと以下のようなSQL文を実行したのですがうまくいきませんでした。 drop database error-10-mooovi3_development; 出力されたエラー文は以下です。 You have an error in your SQL syntax; check the manual that corresponds to…
ER図とは? ER図とは、Entity-Relationship Diagramの略で、テーブル同士の関係を視覚的に分かりやすく表した図です。 正規化が済んだエンティティ同士の関係を紐付ける作業を行います。 具体例 以下の図は、前回正規化を行ったエンティティをER図で表したも…
データベースの正規化とは 正規化とは、データの重複をなくして効率よくデータを扱うために、テーブルを分けて整理することです。 正規化を行うことで、データの追加・更新・削除によってデータの不整合や喪失が起きるのを防ぎ、メンテナンスの効率を高めま…
本日、あるサイトを見てそこからテーブル設計を予測してみようという試みをしたのですが、どのようにテーブルを分けるか・アソシエーションはどうなるか予測を立てることに苦戦しました。。。 そこで今回、データベース設計についてまとめてみようと思います…
profyでは、ActiveRecordコールバックを利用して、questions、answersテーブルのレコードが作られたら、ポリモーフィック関連先のテーブルであるfeed_contentsテーブルにもレコードが保存されるようにしています。ここの仕組みが難しいと感じたので調べて記…
ポリモーフィック関連とは ポリモーフィック関連とは、ある1つのカラムが複数のテーブルを参照しているようなパターンの関連を表したものです。 同じようなカラムを持っているテーブルが複数ある場合、それらを1つのテーブルで管理してしまうことができま…
先日MacOSをMojave&Railsを5.2.1&Rubyを2.5.1にアップデートしました。 そしたらmysqlがbundle installできないエラーに見舞われました。 結構苦戦したので同じエラーが出た人のためになればと思い記事にしました。 エラー内容 rails new をして、bundle in…
N+1問題についてどういう時にどこで発生してしまうのか、includeメソッドを使うと何故解決できるのか今ひとつピンときていなかったので調べました。 N+1問題とは? レコードの数+1回SQLが発行されてしまう問題。 いつどこで起きるか? N+1問題は2つのモデ…
ポリモーフィック関連とは ポリモーフィック関連とは、ある1つのカラムが複数のテーブルを参照しているようなパターンの関連を表したもの。同じようなカラムを持っているテーブルが複数ある場合、それらを1つのテーブルで管理してしまうことができる。複数…
進捗報告 多対多の関係について復習しました。 理解した気になっていて理解しきれていないことがあったため、改めて知識の整理を行いました。 ■理解したもの 多対多の関係 多対多とは 多対多とは、データベースのテーブル同士の関係の1つ。 (他に1対1、1…