タグ ActiveRecord
人気順 10 users 50 users 100 users 500 users 1000 usersN+1 問題を解決すりゃいいってもんでもないらしい
こんにちは! ラブグラフ開発インターンの arawi です。 今日は Rails (ActiveRecord) を使っていると発生してしまいがちな N+1 問題についての記事です! TL;DR preload は SQL でデータを取得したあとインスタンス化するので、大量のレコードを prelaod するととても重くなる 想定する読者 N+1 問題を理解している Rai... 続きを読む
ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog
注意喚起の記事になります。タイトルが結論です。 既にこの問題に言及している記事はいくつかあるのですが*1、私は気付かずに踏んでしまったので、タイトルで「おっと、うちは大丈夫かな」と思ってもらえるようにこの記事を書いています。 joinableとは何か 問題として挙げているjoinableオプションですが、これはネスト... 続きを読む
Rails: Active Recordのfindで怖い思いをした話(翻訳)|TechRacho by BPS株式会社
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: A scary side of ActiveRecord’s find | Arkency Blog 原文公開日: 2019/03/19 原著者: Jakub Kosiński サイト: Arkency Blog 日本語タイトルは内容に即したものにしました。 参考: Rails API find — ActiveRecord::FinderMethods 参考: Object#tap (Ruby 3.... 続きを読む
rubygem開発でSteepを使って型を書く時の現状のオススメ設定 (2023年3月版) - joker1007’s diary
Rails(というかActiveRecord)に型を付けるのは大変だが、Railsが絡まないrubygemにはそんなに苦労なく型が書けるので、これからgemを書く時には型を書きたいという人向けに今のところオススメの設定を紹介します。 というか自分が忘れるのでまとめておきます。 現状とはsteep-1.3.1, rbs-2.8.4を指します。 rbsは既に3系... 続きを読む
ancestryで楽にカテゴリ分けをしよう | GMOアドパートナーズグループ TECH BLOG byGMO
こんにちは。 GMOアドマーケティングのR.Sです。 今回はActiveRecordのモデルをツリー構造で整理できるようにする「ancestry」というgemを紹介します。 親子孫ひ孫のような多階層構造が簡単に実装できるので、カテゴリ分けなどに利用できます。 動作環境 Ruby 2.4.4 Rails 5.2.4 ancestry 3.2.1 gemインストール gem 'an... 続きを読む
ツイッターで見つけて直したActiveRecordの問題3つ - かみぽわーる
Rails Advent Calendar 2020の3日目です。 時間がないのでとりいそぎ3つだけ。 enum state: {active: 0, inactive: 1}とかした時に、typecast前の0とか1を取る ActiveRecord::Enumってstate: {active: 0, inactive: 1}とかした時に、typecast前の0とか1を取る場合、read_attribute_before_type_castを使うしかないのか?... 続きを読む
ActiveRecord::LockWaitTimeout, ActiveRecord::Deadlocked, ActiveRecord::ConnectionTimeoutError が起きた時に原因調査に役立つ情報を表示する gem を作った - あらびき日記
それなりの規模のサービスを運用していると、不可解なエラーに遭遇することはよくあるものです。その中でもデータベース関連のエラーは一見難解な問題に見えるかもしれませんが、原因調査に役立つ情報をさえ出力すればたいていの場合は容易に原因を特定できるものです。というわけで、Rails でよく遭遇するエラーの調査... 続きを読む
AWS LambdaでSeleniumとActiveRecordを扱う · フロッピーディスクの残骸
気付いたらもう9月ですね。 最近、AWS Lambdaでいろいろと遊ぶ機会があったのでメモとして残します。 はじめに とあるセキュリティゲームの運営用に、SeleniumでWebスクレイピングをやっているRubyのスクリプトをEC2で運用していたのですが、Headless Chromeを扱うため大量に起動するとメモリ食っちゃうし、スケールしよ... 続きを読む
ActiveRecordのincludesに複数の関連テーブルを指定したらスロークエリになった件 - LiBz Tech Blog
バックエンドエンジニアの宮澤です。 Railsアプリを開発していると関連テーブルを取得するactiverecordのincludes, eager_load, preloadメソッドはよく使いますよね。 アプリケーションのある箇所でスロークエリが出ているのを見つかって対応した際に、テーブル関連付けの種類によるこれらのメソッドの挙動について調べ... 続きを読む
Rails 6からActiveRecordのAssociationはscopingの影響を受けなくなっている件と対処法 | もばらぶエンジニアブログ
こんにちは。日本ではすっかり秋の空が近づいてきました。個人的に夏は暑さが苦手であまり好きではないのですが、終わってしまうとなると毎年どこか寂しい気持ちになります。 一方で、秋はご飯が美味しいので食べる事が好きな僕にとっては一番好きな季節でもあり、結構心が踊っています。笑 さて、前置きは置いといて今... 続きを読む
ActiveRecordのincludes, preload, eager_load の個人的な使い分け | Money Forward Engineers' Blog
マネーフォワード福岡拠点の責任者をしております 黒田 です。 普段はRailsエンジニアとして マネーフォワードクラウド経費 の開発を担当しています。 普段Railsを使って開発されている方であれば、N+1問題に悩まされた経験は大抵の方がおありではないでしょうか。 N+1なクエリの発見には bullet を使うと良いですね。 b... 続きを読む
ActiveRecord トランザクションと ActiveStorage をちょっとだけ仲良くさせる方法 - SmartHR Tech Blog
こんにちは! SmartHR エンジニアの @gongoZ です。 Ruby on Rails 5.2 より、ファイルアップロードおよびそれらのファイルと ActiveRecord との関連付けを容易にする ActiveStorage という仕組みが導入されました。 お手軽で便利な仕組みなのですが、とある問題に遭遇した際「ここ、もう少しシュッと書けないものだろう... 続きを読む
ActiveRecordを試すときに便利なやつ – r7kamura – Medium
ActiveRecordを試すときに便利なやつ 手元で ActiveRecord の挙動を確かめてみたいときに、いちいちデータベースを用意したり、他人と共有できるコード片に整えたりするのは、結構な手間に感じてしまうかもしれません。この記事では、そういったケースで利用できる知識を幾つかまとめておこうと思います。 以下は今回題材に使うコード例で、これを上から順に説明していきます。 ActiveReco... 続きを読む
ActiveRecord の where.not とド・モルガンの法則 - アジャイルSEの憂鬱
2018 - 03 - 26 ActiveRecord の where.not とド・モルガンの法則 ruby rails where.not を使っていて遭遇した問題についてrailsdmの懇親会で話していたら、 @kamipo さんから「5.2では少し直っている」という情報を頂いた。 この話をしているときに思ったけど、今の where.not の問題点について知らない人も多そうなので、せっかく... 続きを読む
elasticsearch-rails から返るモデルが同値比較できなくてテストで困る問題 - Islands in the byte stream
2018 - 03 - 07 elasticsearch-rails から返るモデルが同値比較できなくてテストで困る問題 elasticsearch-rails はElasticsearchとRails / ActiveRecordのインテグレーションをしてくれるgemです。 こいつを使っているとき、 特定条件下でモデル同士を比較するテストがコケるようになる という現象に悩まされてきました。pry... 続きを読む
ActiveRecordのモデルが1つだとつらい - Qiita
Railsあるある 何気ないモデルの変更がアプリケーション全体を傷つけた TL;DR 最近の趣味アプリではコントローラーごとにモデル生やしてトップレベルのモデル使わない設計で書いていて、コールバックやデフォルトスコープ書き散らかしても影響範囲がコントローラー内だけで済むので便利だしFormオブジェクト書いてグルーしまくる必要もなく快適 — Miyagi (@hanachin_) 2018年1月30... 続きを読む
ActiveRecordでINの中が一万個とかにならないようにする - かみぽわーる
2017 - 12 - 23 ActiveRecordでINの中が一万個とかにならないようにする この記事は MySQL Casual Advent Calendar 2017 の23日目の記事です。 みなさんORマッパーは使っていますか? 僕は仕事とか趣味で ActiveRecord というORマッパーを使っているんですけど、こいつ例えば Team .preload( players : :hi... 続きを読む
ActiveRecord のパフォーマンス改善に関するgemを作った話 - クラウドワークス エンジニアブログ
2017 - 11 - 07 ActiveRecord のパフォーマンス改善に関するgemを作った話 こんにちは。クラウドワークスの八木です。 今回は、ActiveRecord のパフォーマンス改善に関する gem を作ったので、それについて紹介したいと思います。先にオチを書いちゃいますが、この Gem を入れるだけで必ずパフォーマンスよくなるとか、そこまでのものではありません(仮に、そんな銀の弾... 続きを読む
migration の中で model を触ったら必ず reset_column_information する - onk.ninja
migration の中で model を触ったら必ず reset_column_information する 治安の悪い Rails アプリケーションでは、migrate 中に model の不整合で怒られることがあります。 class AddAgeToUsers < ActiveRecord::Migration[5.1] def up p User.first # 1 add_column ... 続きを読む
PostgreSQLで曜日ごと・時間帯ごとにレコードを抽出する - Qiita
やりたいこと railsのactiverecordを使って、PostgreSQLのtimestampカラムに対して、曜日ごと・時間帯ごとにレコードを抽出したい。 ['日', '月', '火', '水', '木', '金', '土'].each_with_index do |dow, i| count_by_dow = Model.where("extract(dow from created_at... 続きを読む
Railsで複数タイムゾーンに対応 | EasyRamble
先日書いた記事 RailsのActiveRecordで今日・昨日など特定の日に保存されたレコードを取得 | EasyRamble の後半で少し触れた、Rails で世界中の複数のタイムゾーンに対応する場合の続き。 国際化する Rails アプリケーションの場合、User モデルに time_zone カラム等を持たせて、ユーザーごとに異なる複数のタイムゾーンに対応する場合もあるかと思いますが、そう... 続きを読む
Railsで複数テーブルのjoins/includesとwhere検索 | EasyRamble
Rails の ActiveRecord で複数の関連する DB テーブル(モデル)を joins/includes させて、where 検索を行う方法です。結構難しかった。 — 環境 — Rub […] 続きを読む
[Rails] ActiveRecordの範囲指定に2点ドット(..)と3点ドット(...)を適切に使う - Qiita
Post.where(id: 1..3) => "SELECT "posts".* FROM "posts" WHERE "posts"."id" BETWEEN 1 AND 3" 続きを読む
ActiveRecord - ちゃんとEager Loadingをした結果、逆に遅くなった件 - Qiita
背景 N+1を起こしている箇所があったので必要なデータをEager Loadingしてデプロイをした その結果、逆にレスポンスが劣化した… td;lr 1:N のような関連の場合、eager_load(LEFT OUTER JOIN)した上で1の側にLIMITをかけると非常に遅いクエリが出来るケースがある 関連するモデル Message/Attachmentの2つ Messageは複数のAttac... 続きを読む
sendagaya.rb #101 でActionDispatchを読んでみた - fukajun - DeepValley -
101回目を迎えて新たなスタートのsendgaya.rbです。 そろそろ、ちゃんとrailsの内部動作について知らなきゃ感があるので、tkawaさんと相談のもとテーマを決めました。(ほかにもActiveRecordとか、Deviseとか、 Rackとか候補がありました。) 注意:この記事で動作自体の解説してないです。 ActionDispatchについて概要 ActionDispatch について... 続きを読む