並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 152件

新着順 人気順

activerecordの検索結果41 - 80 件 / 152件

  • Rails: 本当にやった「責務過剰クラス」の事例(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: When objects become super objects - Write it simple 原文公開日: 2020/08/11 著者: Juan Manuel Ramallo サイト: Write it simple - Simple programming short articles. Mostly ruby focused. 日本語タイトルは内容に即したものにしました。 鉛筆は、何かものを書くのに使います。それ以上のものではありません(お尻に消しゴムが付いている鉛筆もありますが、この際考えないことにしましょう)。 今は何でもデジタルに移行する時代ですよね。鉛筆本体に簡単なOCRスキャナを取り付けて、書いたものが片っ端からデジタル化できたらさぞ便利でしょう。 私は会議で意見を交換中、手元で書いたちょっとした技術用の

      Rails: 本当にやった「責務過剰クラス」の事例(翻訳)|TechRacho by BPS株式会社
    • Rails 7で導入される invert_where メソッドが危険そうだったので調べた - pockestrap

      この記事は現時点(2021-04-28)のrails/railsのmainブランチの最新のコミットでテストしています。 TL;DR invert_whereはすべてのwhereをinvertする 使い方によっては意図しない条件をinvertして危険 invert_whereとは invert_whereは、Rails 7でActiveRecord::Relationに追加される予定のメソッドです。 このメソッドは、relationにチェーンして呼び出すことで、それまでのwhereの条件を反転できます。 つまり次のようになります。(CHANGELOGから引用) class User scope :active, -> { where(accepted: true, locked: false) } end User.active # ... WHERE `accepted` = 1 AND

        Rails 7で導入される invert_where メソッドが危険そうだったので調べた - pockestrap
      • Rails で大量のレコードを並列処理する - ボクココ

        ども、@kimihom です。 今回、大量のレコードを一つずつ処理する実装をしたので、その実装方法をまとめておく。 コードの大枠 以下は全ユーザー(User)に紐づいているレコード(Record) に対して処理をするコードとなっている。 User.all.order("id").each do |u| r_all = u.records r_all.find_in_batches do |records| Parallel.each(records, in_threads: 50) do |r| begin # 処理 ActiveRecord::Base.connection_pool.with_connection do # ActiveRecord を使った処理 end rescue => e puts "err #{e}" end end end r_all = nil end fi

          Rails で大量のレコードを並列処理する - ボクココ
        • Active RecordでRow Level Securityを使って安全にテナント間のデータを分離する - SmartHR Tech Blog

          従業員データベース機能の開発を担当している渡邉です。最近公開したGemであるactiverecord-tenant-level-securityの紹介をします。 SmartHRにおけるマルチテナントの現在 私たちが開発するSmartHRはお客様ごとに1つの環境を提供する、マルチテナント型SaaSです。サービス全体で1つのデータベースを持ち、複数のテナントのデータが混ざらないように、SQLで問い合わせを行います。 1つの環境ごとに1つのデータベースを持つ方式は安全性の面で優れていますが、スキーマの保守やマイグレーションにかかる時間の増加など、多くの技術的な困難をもたらします。この選択の背景については、2018年に書かれた以下の記事もご覧ください。 tech.smarthr.jp とはいえ、常にテナントごとのWHERE句を意識しながらコードを書くのは大変ですし、不具合の温床になります。幸い、私

            Active RecordでRow Level Securityを使って安全にテナント間のデータを分離する - SmartHR Tech Blog
          • Rails 6からActiveRecordのAssociationはscopingの影響を受けなくなっている件と対処法

            こんにちは。日本ではすっかり秋の空が近づいてきました。個人的に夏は暑さが苦手であまり好きではないのですが、終わってしまうとなると毎年どこか寂しい気持ちになります。 一方で、秋はご飯が美味しいので食べる事が好きな僕にとっては一番好きな季節でもあり、結構心が踊っています。笑 さて、前置きは置いといて今回は表題の通り、とあるRails 5.2プロジェクトをRails 6にアップグレードした際に、ActiveRecordのscopingの仕様変更を踏んでしまったのでその対処法をご紹介します。 そもそもscopingとは ActiveRecord::Relation の機能で、引数にブロックを受け取り、その中では、実行時に適用されていたスコープを全クエリでデフォルトで適用する、と言う物になります。 例として、deleted_at (timestamp, nullable) と言うattributeを

              Rails 6からActiveRecordのAssociationはscopingの影響を受けなくなっている件と対処法
            • SpringOnion: Railsの遅そうなEXPLAINをログ出力するgem - so what

              SpringOnionというRailsの遅そうなEXPLAINをログ出力するgemを作りました。 github.com 某kamopoさんのMySQLCasualLog.pmの移植?です。 cf. ふつうのWeb開発者のためのクエリチューニング 以前の移植とは異なって、Arproxyを必要とせず、単体で動きます。 何年前の話だよといわれそうですが、未だにスロークエリと戦っていたりするので… Rails 3以前に搭載されていた、遅かったクエリを自動的にEXPLAINする機能とは異なり、フィルタで選別されたすべてのクエリに対してEXPLAINを実行し、まずそうなキーワードが出現したらログに出力します。 また、EXPLAINの実行先は開発用のDBだけでなく任意のDBに向けられます(例: ステージング環境のDBなど)。 使い方 GemfileにSpringOnionを追加して group :dev

                SpringOnion: Railsの遅そうなEXPLAINをログ出力するgem - so what
              • kamipoさんのアドバイスと拠点を跨いだ勉強会 - RailsとRubyとVimのブログ

                この記事は京都開発拠点アドベントカレンダー 18日目の記事です。 マネーフォワードには開発拠点が複数ありますが、技術情報はSlackで議論・共有されています。 今日はそんなSlackの中から、東京拠点と京都拠点を跨いで開催した「Railsへコントリビュートする勉強会」について、東京拠点のアルパカ隊長が紹介します。 はじまりのSlack ふとした時に、社内SlackのRubyチャンネルでこんな会話がありました。 @alpaca-tc 程よい難易度で、kamipoさんが「これ自分がやらんでもええやろ」みたいなissueがあれば このslackに投げてもらって 誰かシニアエンジニアがサポートしつつ、新卒がRailsコントリビュートするみたいなのやりたい:eyes: すると、kamipoさんからすぐ解決できるものは見た瞬間に直してしまっていると前置きがあった上で、 こんなissueを教えてもらいま

                  kamipoさんのアドバイスと拠点を跨いだ勉強会 - RailsとRubyとVimのブログ
                • RubyでDSLが書きやすい理由を整理する - Qiita

                  これは何 Rubyは「DSLが書きやすい言語」という説明がされることがあります。 なぜRubyはDSLが書きやすい、と言われるのかを僕なりにまとめてみました。 「こういう要素もあるからだよ」などあればぜひコメントや編集リクエストをいただけると嬉しいです。 DSLの例 DSLとは直訳するとドメイン固有言語です。 簡単なイメージで言うと、「ユーザーが自由に構文に近い仕組みを実装、提供できる」ようなものです。 詳しい説明はWikipediaにお任せします。 RubyやRailsで使われているDSLで有名なものはActiveRecord周りの実装などでしょうか。 例を記載します。

                    RubyでDSLが書きやすい理由を整理する - Qiita
                  • create_or_find_byでcreateもfind_byも失敗させる - かみぽわーる

                    Active Recordの話です。 create_or_find_byの実装はcreateしてみてユニーク制約に引っかかったらfind_byしてみるなので、ふつうに考えるとfind_byは成功しそうに見えます。 def create_or_find_by(attributes, &block) transaction(requires_new: true) { create(attributes, &block) } rescue ActiveRecord::RecordNotUnique find_by!(attributes) end ですが、以下のスクリプトを実行するとcreate_or_find_byはcreateがRecordNotUnique例外を吐いたあと、find_byもRecordNotFound例外を吐いてレコードを見つけられずに死にます。 ちょっと今から会食なので原

                      create_or_find_byでcreateもfind_byも失敗させる - かみぽわーる
                    • 技術書典7で、「ActiveRecord完全に理解した」という本を出します。

                      技術書典7で、「ActiveRecord完全に理解した」という本を出します。 posted at 2019-09-21 13:10:08 +0900 by kinoppyd 免責事項 本書のタイトルにある「完全に理解した」とは、ActiveRecordを完全に理解することではなく、あくまで社会通念上相当のActiveRecord「完全に理解した」であり、本書はActiveRecordを完全に理解することを何ら保証するものではありません。 技術書典7 ドワンゴを退職してSmartHRで働き始めそろそろ一ヶ月のkinoppydです。技術書典に出ます。場所は「◎貴サークル「トレイリア学園」は、 か01C に配置されました。」です。ブックマークはここからどうぞ。今回は、ActiveRecordのソースコードリーディングの本を出そうと思います。500円です。前回はメタプログラミングRubyの解説本で

                        技術書典7で、「ActiveRecord完全に理解した」という本を出します。
                      • 【翻訳】ActiveRecordにおける、ネストしたトランザクションの落とし穴 - Qiita

                        🙅‍♂️この記事の内容は実際のコードに適用しないでください!! (2022-10-5追記) この記事の本文でトランザクションに joinable: false というオプションを付けることが推奨されていますが、 joinable: false は内部APIなので指定してはいけない、というのがRails開発チームの見解のようです。 https://github.com/rails/rails/issues/39912#issuecomment-665483779 https://github.com/rails/rails/issues/46182#issuecomment-1266550987 joinable: false を付けるとコミット実行前にafter_create_commitコールバックが呼ばれるなど(参考)、思いがけない別の問題を引き起こすことがあります。 というわけで、

                          【翻訳】ActiveRecordにおける、ネストしたトランザクションの落とし穴 - Qiita
                        • SQLパフォーマンスチューニングの始め方 | 働くひとと組織の健康を創る iCARE

                          こんにちは、iCAREサーバーサイドエンジニアの寺井(@krpk1900_dev)です。 私は今まで新規機能の開発を担当することがほとんどで、既存機能のパフォーマンス改善に取り組むときに何から手を着けて良いか分からなかったため、今回はSQLパフォーマンスチューニングについて調べた内容を記事にしたいと思います。 全体の流れ ざっくり調べてみた内容をフローチャートで整理してみました。 このフローチャートには含めませんでしたが、根本的な解決策としてそもそものロジックやデータ構造を見直すという方法もあります。 1. レスポンスに時間がかかっている箇所とその原因を特定する まずはDatadogのAPMなどでレスポンスに時間がかかっているリクエストを特定します。 APM(Application Performance Monitoring)とは、アプリケーションの性能を管理したり監視するための機能です

                            SQLパフォーマンスチューニングの始め方 | 働くひとと組織の健康を創る iCARE
                          • Rails 6.1の新機能「strict_loading」でN+1を検知する

                            こんにちは。 GMOアドマーケティングの石丸(@thomi40)です。 昨年の12月にRuby on Rails 6.1の新機能の1つである「annotate_rendered_view_with_filenames」について紹介しました。 この記事は GMOアドマーケティング Advent Calendar 2020 8日目の記事です。はじめにこんにちは。GMOアドマーケティングの石丸(@thomi40)です。弊社では複数のプロダクトでRuby on Railsを使って開発を行っています。今回はRails 6.1で導入が予定されている「annotate_rendered_view_with_filenames」について紹介します。annotate_rendered_view_with_filenamesとは?annotate_rendered_view_with_filenames は

                              Rails 6.1の新機能「strict_loading」でN+1を検知する
                            • GitHub - instant-dev/instant: JavaScript API framework with ORM, migrations and vectors

                              instant.dev provides a fast, reliable and battle-tested ORM and migration management system for Postgres 13+ built in JavaScript. For those familiar with Ruby on Rails, instant.dev adds functionality similar to ActiveRecord to the Node.js, Deno and Bun ecosystems. We have been using it since 2016 in production at Autocode where it has managed over 1 billion records in a 4TB AWS Aurora Postgres ins

                                GitHub - instant-dev/instant: JavaScript API framework with ORM, migrations and vectors
                              • switch_point では ActiveRecord v6.1 以降をサポートしないことにした - eagletmt's blog

                                switch_point を4年ぶりにリリースした。このリリースは主に ActiveRecord v6.1 以降をサポートしない意志を表明するためのものである。 github.com switch_point は6年前に仕事で困ったことを解決するために書いた gem である。経緯は https://eagletmt.hateblo.jp/entry/2014/09/22/203819 を参照。この記事にある「Rails の激しい変更についていきやすい設計・実装」は成功したと思っていて、バージョンや respond_to? による分岐を一切せずに ActiveRecord v3.2 から v6.0 までサポートすることに成功している。 しかしまもなくリリースされるであろう ActiveRecord v6.1 では ActiveRecord::ConnectionAdapters::Conne

                                  switch_point では ActiveRecord v6.1 以降をサポートしないことにした - eagletmt's blog
                                • Railsで大量データを扱うときに気をつけていること - LCL Engineers' Blog

                                  バックエンドエンジニアの横塚です。 Railsで中規模以上のサービスを運用していると、大量のレコードやcsvをバッチで処理したい場面などが出てくると思います。 当たり前のように意識できている人も多いかと思いますが、今回はおさらいの意味も込めてバッチで大量データを扱うときに気をつけていることをまとめていこうと思います! 大量レコードに対して処理をするときはfind_eachやfind_in_batchesを使う DBからデータを取得してきて処理をしたい場合、eachで処理しようとすると対象データがすべてメモリに展開されてしまいますが、find_eachは1行ずつメモリに展開するため、レコード数を気にせず処理をすることができます。 User.each do |user| # なんか処理 end ↓ User.find_each do |user| # なんか処理 end また、find_in_

                                    Railsで大量データを扱うときに気をつけていること - LCL Engineers' Blog
                                  • 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.2 リファレンスマニュアル) 私は最近プロジェクトでこんなリファクタリングを行いました。identityに束縛されたコンテキストにドメインイベントをさらに追加することで、システム内のidentityに対して実行された特定のアクションから取得する監査ログを改善するというものです。手始めに、コマンドを消費する責務を持つServiceを

                                      Rails: Active Recordのfindで怖い思いをした話(翻訳)|TechRacho by BPS株式会社
                                    • ActiverecordMultiTenant でマルチテナンシー|yks0406

                                      Geppoでバックエンドエンジニアをしている@yks0406です。日本酒で膨らんだお腹を凹ませるために、片道8キロの道のりを毎朝毎晩自転車で通勤しています。これまではRailsを中心にバック/フロントどちらも対応するスタイルで開発してきましたが、1年前Geppoにジョインしてからはバックエンドをメインに開発しています。 今回はGeppoに activerecord-multi-tenant を導入した際の話です。 導入の検討を開始したのが2018年1月あたりで、実際に導入が完了したのは2019年10月です。方針決定までに1年4ヶ月、開発に6ヶ月かかりました。途中空白の期間が発生してはいるものの、なかなかの作業ボリュームでした。 ※この記事はHR Tech Advent Calendar 2019の最終日の記事です マルチテナンシーって何? 1つのサービスで複数クライアント(つまりテナント)

                                        ActiverecordMultiTenant でマルチテナンシー|yks0406
                                      • Rails: Bulletで検出されないN+1クエリを解消する|TechRacho by BPS株式会社

                                        はじめに 普段、Railsを使って開発されている方であれば、関連するテーブルのデータを扱うときなど、N+1クエリを発行していないか、気をつけているかと思います。 また、うっかりN+1クエリを発行してしまうことを防ぐため、N+1クエリを自動で検出するBulletというgemを導入しているかたも多いかと思います。ただ、Bulletで検出されないクエリでもN+1になっているケースがあります。 この記事ではBulletでは検出されないが、N+1になっているクエリを改善する方法を紹介します。 N+1問題とは N+1問題とは、1回のクエリで済むところをデータ量(N)の回数、クエリを発行してしまう問題のことです。 例えば以下のようなクエリはN+1クエリです。 Post Load (0.3ms) SELECT "posts".* FROM "posts" ↳ app/views/posts/index.h

                                          Rails: Bulletで検出されないN+1クエリを解消する|TechRacho by BPS株式会社
                                        • ActiveRecord の接続管理の仕組み

                                          ActiveRecord がデータベースとの接続をどう管理しているのかを調べたメモ。主に active_record/connection_adapters 以下の話。現時点での main ブランチの HEAD を参照した。 詰まったときに調べる箇所のあたりを付けられるよう全体観を持ちたいという目的だったので、細かい部分まで把握しきれていはおらず、ご了承ください。 ActiveRecord の使い方のおさらい まず最初にユーザーとして、ActiveRecord でデータベースにクエリを発行する際の流れを簡単におさらいする。 まずデータベースの接続情報を database.yml に記載する。ここではメインとなる primay DB と animals DB の 2 つがあり、またそれぞれに primary (master) と replica があるとする (この例は Active Rec

                                            ActiveRecord の接続管理の仕組み
                                          • そろそろ理解する includes / Understanding includes

                                            RubyKaigi 2024 直前LT祭の発表スライドです。 https://timeedev.connpass.com/event/315946/ スライド内の includes クイズを手元で動かすためのスクリプト: https://gist.github.com/euglena1215/fb6cd1235278491dc206b9bd6feaf71e

                                              そろそろ理解する includes / Understanding includes
                                            • ActiveRecordのincludesは使わずにpreloadとeager_loadを使い分ける理由 - Qiita

                                              はじめに ActiveRecordでN+1問題やスロークエリを解消するためにeager loadingを行う場合、普段Railsを使って開発されている方であれば、パッと思いつくのはincludesではないでしょうか?もしくは、preloadやeager_loadを使用しますよね。 この記事では、Webサイト表示パフォーマンスを保つため、ActiveRecordのメソッドの違いや、どいういう場合に使ったら良いのか、どいういう場合には使わない方が良いのかについて書きました。 実際に Railsアプリケーションを作成して解説していきます。 用語の説明と分類「ORM の Eager loading と Lazy loading」 Webサイト表示パフォーマンスを保つため、ORM(RailsではActiveRecord)では、Eager loading と Lazy laodingというものをサポー

                                                ActiveRecordのincludesは使わずにpreloadとeager_loadを使い分ける理由 - Qiita
                                              • Rails: Active Record属性のデフォルト値はコールバックよりもdefaultオプションで設定しよう(翻訳)|TechRacho by BPS株式会社

                                                概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Assign a default value to an attribute in Active Record - Andy Croll 原文公開日: 2023/03/13 原著者: Andy Croll 日本語タイトルは内容に即したものにしました。 以下のAPIドキュメントもどうぞ。 Rails: ActiveRecord標準のattributes APIドキュメント(翻訳) Active Recordモデルのインスタンスにデフォルト値を設定する必要が生じたことのある人は、おそらくコールバックでデフォルト値を設定したことがあるでしょう。 実はRails 5.0からもっとよい方法があるのですが、最近まで気づいていませんでした(Mosesに感謝します!) 参考: §2.3 Active Record属性API -- Ruby on

                                                  Rails: Active Record属性のデフォルト値はコールバックよりもdefaultオプションで設定しよう(翻訳)|TechRacho by BPS株式会社
                                                • Active Recordで関連先を保存するときに気をつけること - おもしろwebサービス開発日記

                                                  先日、仕事でRails(Active Record)の難しい仕様に遭遇したので共有するためにエントリをしたためました。似たようなケースに遭遇した人の手助けになれば幸いです(\( ⁰⊖⁰)/) 対応Railsバージョンと設定 Rails6.1以上 config.active_record.has_many_inversing = true(Rails6.1のデフォルト設定)である 問題1 まず次のコードを読んでみてください。 class User < ApplicationRecord has_many :posts end class Post < ApplicationRecord belongs_to :user, inverse_of: :posts # (1) before_update { puts 'before_update' } end user = User.new po

                                                    Active Recordで関連先を保存するときに気をつけること - おもしろwebサービス開発日記
                                                  • ActiveRecordのincludesに複数の関連テーブルを指定したらスロークエリになった件 - LiBz Tech Blog

                                                    バックエンドエンジニアの宮澤です。 Railsアプリを開発していると関連テーブルを取得するactiverecordのincludes, eager_load, preloadメソッドはよく使いますよね。 アプリケーションのある箇所でスロークエリが出ているのを見つかって対応した際に、テーブル関連付けの種類によるこれらのメソッドの挙動について調べてみました。 テーブル設計 ER図 サンプルとしてシンプルに地域 => 国 => 都市と1:Nの関係でテーブルを作成します マイグレーション class CreateRegions < ActiveRecord::Migration[6.0] def change create_table :regions do |t| t.string :name t.timestamps end end end class CreateCountries < Ac

                                                      ActiveRecordのincludesに複数の関連テーブルを指定したらスロークエリになった件 - LiBz Tech Blog
                                                    • 14 tools and gems every Ruby developer would love

                                                        14 tools and gems every Ruby developer would love
                                                      • STI、Polymorphic関連を実際に使用した話 - エニグモ開発者ブログ

                                                        こんにちは!サーバーサイドエンジニアの@hokita222です! 有酸素運動は脳を活性化させると聞いて、最近は朝会社に出社せずにランニングしております! それはさておき、これは Enigmo Advent Calendar 2019 23日目の記事です! 今回は弊社が運営するサイトのBUYMA (Ruby on Rails)に追加した機能で、STI、ポリモーフィック関連を使ってみたので、どういう設計にしたかを書いていこうと思います。 ※使ってみたって話で、それぞれどういう特徴なのかなどの詳しい説明はしておりません。 どんな機能作ったの? 「〇〇キャンペーン」などの施策で、その日あった取引の中で特定の条件(商品ID、カテゴリーID、何円以上など)のものを絞り込み、その対象の取引に対して特定のアクションをさせます。 今回はこの機能の「特定の条件で絞る」の設計を説明していきたいと思います。 設計

                                                          STI、Polymorphic関連を実際に使用した話 - エニグモ開発者ブログ
                                                        • Rails 7 で追加されたComparisonValidatorで日付のバリデーションを実装する

                                                          この記事は GMOアドマーケティング Advent Calendar 2022 3日目の記事です。 はじめに こんにちは。 GMOアドマーケティングの石丸(@thomi40)です。 前回の記事では Rails 7 から実装された query_log_tags について紹介しました。 はじめにこんにちは。GMOアドマーケティングの石丸(@thomi40)です。以前、本ブログでRails 6.1に新しく追加された機能について紹介しました。今回はRails 7から追加された「query_log_tags」について紹介します。query_log_tagsとは?query_log_tags は Active Record のオプションの一つで、設定を有効にすることでクエリのログに自動でコメントを追加することができる機能です。元々は「Marginalia」というGemで実装されていた機能とのこと。詳細

                                                            Rails 7 で追加されたComparisonValidatorで日付のバリデーションを実装する
                                                          • Rails 6.1: 孤立化したレコードのリストを取れる'missing'クエリメソッドが追加(翻訳)|TechRacho by BPS株式会社

                                                            概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rails 6.1 adds query method missing to find orphan records | Saeloun Blog 原文公開日: 2021/01/21 著者: Prateek Choudhary サイト: Saeloun Blog | Ruby on Rails Consulting Company based in San Francisco and Boston 日本語タイトルは内容に即したものにしました。 以下の関連記事もどうぞ。 週刊Railsウォッチ20190513: 孤立化したレコードを検索するmissingメソッド Rails 6.1: 孤立化したレコードのリストを取れるmissingクエリメソッドが追加(翻訳) Rails 6.1に、ActiveRecord内の孤立化したレコード(o

                                                              Rails 6.1: 孤立化したレコードのリストを取れる'missing'クエリメソッドが追加(翻訳)|TechRacho by BPS株式会社
                                                            • Rails 5.1 で DatabaseRewinder + Activerecord-Import + PostgreSQL が上手くいかない問題が期せずして(?)解決した - ドワンゴ教育サービス開発者ブログ

                                                              この記事は 第二のドワンゴ Advent Calendar 2019 の19日目の記事です。 qiita.com 誰 naari3です。 ドワンゴで N予備校 のバックエンド開発をやっています。 概要 Rails 5.0 から Rails 5.1 にアップデートする対応の最中に遭遇した現象を紹介します。 依存しているgem同士の相性が悪かった問題がRailsのアップデートによって解決されました。 内容的にはただのコードリーディングになってしまいますが、面白かったので書き起こすことにしました。 Activerecord-Import とは github.com ActiveRecord でバルクインサートをするためのgemです。 ActiveRecord::Base.import (以下 AR.import と記述します) が生えます。このメソッドにセーブしていないレコードの配列を渡す等する

                                                                Rails 5.1 で DatabaseRewinder + Activerecord-Import + PostgreSQL が上手くいかない問題が期せずして(?)解決した - ドワンゴ教育サービス開発者ブログ
                                                              • Rails5 から enum 使う時は_prefix(接頭辞)_suffix(接尾辞)を使おう - Qiita

                                                                enum :status, { active: 0, archived: 10 }, prefix: true enum :comments_status, { active: 10, inactive: 20 }, suffix: true 余計なアンダースコアなども抜け落ちてスッキリし、Afterの方が印象は良いですね。 この記事で伝えたいこと Rails5 からActiveRecord::Enum を定義する際は_prefix、_suffixという武器がある事を知っていただきたい。 核心部分だけ見たい方は、ショートカット 2019.09.12 文章の 「です・ます」調を統一。 2019.06.01 例として使用するテーブルの説明を追記 Rails のバージョン

                                                                  Rails5 から enum 使う時は_prefix(接頭辞)_suffix(接尾辞)を使おう - Qiita
                                                                • Rails: メールをActive Recordのコールバックで送信しないこと(翻訳)|TechRacho by BPS株式会社

                                                                  概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Don’t Email From Active Record Callbacks - Andy Croll 原文公開日: 2019/06/02 著者: Andy Croll Railsアプリケーションで何かとやってみたくなることのひとつといえば、メール送信でしょう。 モデルのインスタンスが変更または作成されたときにメールを送信するというのが、よくあるパターンです。 次のようにしないこと モデルのコールバックにメール送信を仕込む。 class BookReview < ApplicationRecord after_create :send_email_to_author private def send_email_to_author AuthorMailer. with(author: author). review_notif

                                                                    Rails: メールをActive Recordのコールバックで送信しないこと(翻訳)|TechRacho by BPS株式会社
                                                                  • Rails APIドキュメント: Active Recordのトランザクション(翻訳)|TechRacho by BPS株式会社

                                                                    概要 MITライセンスに基づいて翻訳・公開いたします。 英語ドキュメント: ActiveRecord::Transactions::ClassMethods(18707ab) ライセンス: MIT 2020/11/30: 初版公開(77f7b2d) 2022/12/07: 更新 トランザクションとは、それが1件のアトミックな操作としてすべて成功した場合に限りSQLステートメントが永続化する、保護的なブロックです。古典的な例としては「出金が成功した場合にのみ入金ができる(またはその逆の)2つの口座間での振替」があります。トランザクションはデータベースの一貫性を強制し、プログラムのエラーやデータベースの破損からデータを保護します。つまり、「すべて一括実行される」か「一切実行されない」かのどちらかでなければならないステートメントが複数ある場合は、基本的にトランザクションブロックを使うべきです。

                                                                      Rails APIドキュメント: Active Recordのトランザクション(翻訳)|TechRacho by BPS株式会社
                                                                    • Railsのデザインパターン: Formオブジェクト

                                                                      Formオブジェクトとはまず、この記事におけるFormオブジェクトについて定義します。Formオブジェクトはモデル層に属するクラス群で、コントローラ層からユーザーの入力を受けとり整形・検証し永続化する責務をもちます。またビュー層に表示するためのデータを提供する、という役割もあります。 FormオブジェクトはActiveRecordモデルと1対1の場合もありますが、そうでなくてもかまいません。複数のActiveRecordモデルの場合もあれば、対応するActiveRecordモデルがない場合にも採用できます。 Formオブジェクトの必要性Formオブジェクトはフォームの責務をカプセル化し、コントローラやビューを疎結合に保つために必要なデザインパターンです。 ユーザーの入力の整形や永続化をコントローラだけで行うと、コントローラが肥大化してしまいます。この原因はコントローラがモデル層の知識をもち

                                                                        Railsのデザインパターン: Formオブジェクト
                                                                      • has_manyにブロック引数を渡してリレーションを拡張する|TechRacho by BPS株式会社

                                                                        今日はhas_manyのブロック引数に関して取り上げます。 以下のモデルを想定します。 # attributes # # name: 氏名 # attendance_count: 出席回数 class Student < ApplicationRecord has_many :exams end # attributes # # student_id: 学生ID # subject: 教科 # period: テスト実施回 # score: 得点 class Exam < ApplicationRecord belongs_to :student end スコープブロック has_many のブロックと聞くとまずスコープブロックが思いつくと思います。 今回のテーマのブロック引数とは異なりますが、先にスコープブロックに関して触れていきます。 スコープブロックは has_many の第2引数に

                                                                          has_manyにブロック引数を渡してリレーションを拡張する|TechRacho by BPS株式会社
                                                                        • Ruby on Rails: BulletからRails標準のstrict loadingに乗り換えるMEMO📝 - Madogiwa Blog

                                                                          今までN+1の検知にBulletを使っていたのですが🔫 github.com Rails 6.1から導入された新機能strict loadingでも同じようなことが実現できそうだったので、個人のWebサービスをBulletからstrict loadingに載せ替える手順をメモしておきます📝 strict_loadingをグローバルに導入する strict loadingを無効化する ActiveRecordのインスタンスにstrict_loadingを無効化するメソッドを追加 FactoryBotで作成したインスタンスはstrict_loadingを無効化する console時にstrict loadingを無効化する おわりに 追記:2021/04/05 参考 strict loadingの概要は以前まとめているので、興味がある人はこちらからどうぞ madogiwa0124.hate

                                                                            Ruby on Rails: BulletからRails標準のstrict loadingに乗り換えるMEMO📝 - Madogiwa Blog
                                                                          • 『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか

                                                                            2024/04/24(Wed)に行われたGotanda.rb#58の登壇資料です。 https://gotanda-rb.connpass.com/event/315058/ 『Railsオワコン』と言われる時代に、なぜブルーモ証券はテックスタックの1つとしてRailsを選んだのかの解説資料です。

                                                                              『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
                                                                            • ActiveRecord の with_lock に先人の知恵を学ぶ - Qiita

                                                                              # User モデルを作ります bin/rails g model user name email Running via Spring preloader process 756 invoke active_record create db/migrate/20190302083847_create_users.rb identical app/models/user.rb invoke test_unit create test/models/user_test.rb create test/fixtures/users.yml $ bin/rails db:migrate == 20190302083847 CreateUsers: migrating ====================================== -- create_table(:users) ->

                                                                                ActiveRecord の with_lock に先人の知恵を学ぶ - Qiita
                                                                              • Railsの技: 関連先レコードがないデータをwhere.missingで検索する(翻訳)|TechRacho by BPS株式会社

                                                                                概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Find records missing an association with where.missing | Boring Rails: Skip the bullshit and ship fast 原文公開日: 2021/03/14 著者: Matt Swanson サイト: Boring Rails #missingはRails 6.1で追加された機能です。 参考: 週刊Railsウォッチ(20190513) 否定は一般には立証できませんが(訳注: 消極的事実の証明)、データベースに否定のクエリを投げることについてはどうでしょうか。クエリはデータを検索するために書くのが普通ですが、逆にデータが「存在しない」ことを検出するためにクエリを書くこともあります。 生SQLで言うなら、LEFT OUTER JOINとNULLチェッ

                                                                                  Railsの技: 関連先レコードがないデータをwhere.missingで検索する(翻訳)|TechRacho by BPS株式会社
                                                                                • preload、eager_load、includesの挙動を理解して使い分ける - stmn tech blog

                                                                                  目次 はじめに 使用する関連付け preload、eager_load、includesの挙動 includesはどのような場合にpreloadとeager_loadの挙動となるのか preload、eager_loadの使い分け さいごに はじめに こんにちは、株式会社スタメンでエンジニアをしているワカゾノです! 4月からサーバーサイドエンジニアとして、弊社プロダクトTUNAGの開発を行っております。 先日、弊社CTOの松谷とペアプロを行いました。 パフォーマンス改善のタスクを行いましたが、タスクを通してN + 1問題に複数回直面しました。 Active Recordにおいて、N + 1問題を解消する方法として、関連テーブルのデータを事前に読み込んでおき、キャシュしておくという方法を取ると思いますが、Railsではその方法としてpreload、eager_load、includesメソッ

                                                                                    preload、eager_load、includesの挙動を理解して使い分ける - stmn tech blog