並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 120 件 / 151件

新着順 人気順

activerecordの検索結果81 - 120 件 / 151件

  • さようならActiveRecord|sakuraya | CTO的な何か|note

    こちらの訳になります。 ActiveRecordに代わるORマッパーとして提唱されてているROMに関するお話です。リポジトリパターンとかバリューオブジェクトとかその辺のテクニックをいろいろ詰め込んでファットモデルをバラバラにしようみたいな考えみたいです。試してみる価値はありそう。 以下訳。 AirCallでは、エンジニアたちがごちゃごちゃしたRailsのレガシーなモノリスと格闘している。いま徐々に軽量なRuby×Sinatra製のマイクロサービスに分割を進めているところだ。また、過去の失敗を繰り返さないために、クリーンアーキテクチャやドメイン駆動開発といった新しいアーキテクチャを試し始めた。そしてROM(Ruby Object Mapper)はこれらの思想によくマッチしたものだった。 ROMがいかに便利なものかをよく知ってもらうために、まずはActiveRecordがもたらす問題点について

      さようならActiveRecord|sakuraya | CTO的な何か|note
    • Railsでポリモーフィック関連を使った話(理由、必要な作業、注意点) - ESM アジャイル事業部 開発者ブログ

      こんにちは、アジャイル事業部 9sako6 です。 私のいるプロジェクトで大きなエンハンスが行われ、その中で Polymorphic Association(ポリモーフィック関連) を使う場面がありました。 ポリモーフィック関連を選択した理由や行った作業、注意点について話します。 架空のサービスを例に説明を行います。 サービス概要 私たちが運営するサービスでは、Magician(魔法使い)と、その魔法使いが扱える Magic(魔法)を調べることができます。 この世界の Magic(魔法)に同一のものはなく、 ユニークです。Magic(魔法)はMagician(魔法使い)に属しています。 class Magic < ApplicationRecord belongs_to :magician end class Magician < ApplicationRecord has_many :m

        Railsでポリモーフィック関連を使った話(理由、必要な作業、注意点) - ESM アジャイル事業部 開発者ブログ
      • Why and how GitHub encrypts sensitive database columns using ActiveRecord::Encryption

        EngineeringSecurityWhy and how GitHub encrypts sensitive database columns using ActiveRecord::EncryptionYou may know that GitHub encrypts your source code at rest, but you may not have known that we encrypt sensitive database columns as well. Read about our column encryption strategy and our decision to adopt the Rails column encryption standard. You may know that GitHub encrypts your source code

          Why and how GitHub encrypts sensitive database columns using ActiveRecord::Encryption
        • ActiveRecord(Rails)で効率的にツリー構造を扱うときに意識したいこと+開発例 | Wantedly Engineer Blog

          こんにちは、Wantedly で Webエンジニアをしている渡邉(@eityans) です。モチベーション・マネジメントサービスの Wantedly Pulse を開発しています。 Pulse(パルス)/ チームの状態 Slackを通じてチームの価値観を浸透させ、メンバーの抱える課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出す、新しいモチベーション・マネージメントツールです。 Slackを通じてメンバーの抱えるモチベーションの課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出します。 ... Pulseはチームの状態を可視化するツールです。会社全体をチームとして扱うこともできますが、従業員数の多い企業の場合、より小さなチームの状態を可視化したくなります。Pulseでは、上司部下の関係を設定することで、チームの設定が

            ActiveRecord(Rails)で効率的にツリー構造を扱うときに意識したいこと+開発例 | Wantedly Engineer Blog
          • 週刊Railsウォッチ(20200330前編)Active Record Doctorで診断、Webpacker 5、GitHubのViewComponentとRails 6.1の3rd-party component frameworkほか|TechRacho by BPS株式会社

            2020.03.30 週刊Railsウォッチ(20200330前編)Active Record Doctorで診断、Webpacker 5、GitHubのViewComponentとRails 6.1の3rd-party component frameworkほか こんにちは、hachi8833です。 つっつき前ボイス:「このところフルリモートで自宅作業していると、つい人と口をきくのを忘れちゃいそうになるので、つっつき会参加します」「そんなに」「ゴミ捨て以外まったく外に出ませんでした」「ほぼパーフェクト」 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください ⚓

              週刊Railsウォッチ(20200330前編)Active Record Doctorで診断、Webpacker 5、GitHubのViewComponentとRails 6.1の3rd-party component frameworkほか|TechRacho by BPS株式会社
            • 「Rails 6.1で新しく入る機能について」iCARE Dev Meetup #12 の登壇内容 https://icare.connpass.com/event/183716/

              rails_6_1_new_features.md Rails 6.1で新しく入る機能について @willnet 最近のRailsリリース日 6.0.0 (2019/08/06) 5.2.0 (2018/04/09) 5.1.0 (2017/04/27) 5.0.0 (2016/06/30) だいたい1年くらいでマイナー、メジャーバージョンが上がる RailsConf(毎年だいたい4末くらいに開催)がターゲットになっていそう ではそろそろ6.1.0でるの?というとまだっぽい雰囲気を感じる https://github.com/rails/rails/pulls?q=is%3Aopen+is%3Apr+milestone%3A6.1.0 一応6.1.beta1用のブログエントリの準備用PRはある(けどいまアクティブではない) Add post about 6.1.beta1 release

                「Rails 6.1で新しく入る機能について」iCARE Dev Meetup #12 の登壇内容 https://icare.connpass.com/event/183716/
              • Pitfalls of Rails db transactions

                Rollback Rails transaction and rescue error to display it good: This is fine record = MyModel.last error_for_user = nil begin ActiveRecord::Base.transaction do # ... record.save! end rescue ActiveRecord::RecordInvalid => e # do something with exception here error_for_user = "Sorry your transaction failed. Reason: #{e}" end puts error_for_user || "Success" source, source2, source3 This is ok as wel

                • Rails(ActiveRecord)で自在にSQLを書く手段いろいろ

                  こんにちはー。 Railsである程度の規模の開発をしていると、ちょっと込み入った形のSQLでデータを取得したい状況が発生してきます。 今回は、そんなときに役立つActiveRecordクエリのテクニックをご紹介します。 ちなみにexecute()、arelは使いません。 (環境: Ruby 2.5.3, Rails 6.1.3) selectをゴリゴリ書く ActiveRecordのselectというメソッドがあります。 基本的な使い方としては、こんな感じで、必要なカラムだけ取得するためのものです。 users = User.all.select(:id, :name) users.first.attributes # => {"id"=>1, "name"=>"Alice"} なんですが、SELECT句を文字列で好きに書くこともできます。別名を付けておくことで、その名前で値を取得できます

                    Rails(ActiveRecord)で自在にSQLを書く手段いろいろ
                  • Rails: ActiveRecord::DelegatedType APIドキュメント(翻訳)|TechRacho by BPS株式会社

                    概要 MITライセンスに基づいて翻訳・公開いたします。 APIドキュメント: ActiveRecord::DelegatedType リポジトリ: rails/delegated_type.rb at main · rails/rails 原文更新日: 2021/11/03(57fe7df) ライセンス: MIT ActiveRecord::DelegatedTypeはRails 6.1以降で利用できます。delegated typeは英ママとしました。 週刊Railsウォッチ20200601 新機能: Active Recordにdelegated_typeが追加もどうぞ。 また、Rails 7ではaccepts_nested_attributes_forもサポートされています。 週刊Railsウォッチ20211115前編 delegated_typeでaccepts_nested_at

                      Rails: ActiveRecord::DelegatedType APIドキュメント(翻訳)|TechRacho by BPS株式会社
                    • Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚える - Qiita

                      Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚えるRailsActiveRecordSQL Railsで使用する生SQL Railsにおいて、ActiveRecordのwhere等では表現できない複雑なクエリを使用してDBのデータを取得する場合、生でSQLを書く必要が出てくると思います。 しかし、AcitiveRecordで生sqlを実行するメソッドは数多くあり、用途によってどれを使用すべきか分からないという方もいるのではないでしょうか。 そこで今回はよく使用されるであろう、execute/select_all/find_by_sqlについて、どのように呼び出すのか、戻り値はなにか、どのような用途で使用すべきかについて説明します。 先に結論を書いておくと execute -> クエリの実行 select_all -> セレクト文の結果

                        Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚える - Qiita
                      • ActiveRecordモデルのカラムを消すときにignored_columnsが必要な理由 - Progate Tech Blog

                        自己紹介 株式会社Progateサーバーサイドエンジニアのもりたんざにあです。 好きなものは卓球と筋トレです。 業務でignored_columnsの必要性や、内部で何をしているかについて調べたので、その過程でわかったことを紹介しようと思います。 前提条件 この記事の内容は https://github.com/rails/rails/tree/5-2-stable のソースコードを前提としています。 ignored_columnsとは 公式ドキュメンテーション : https://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-ignored_columns 「このカラムがデータベースのテーブルにあっても、無視してね!」とRailsのモデルに伝えるために、ActiveRecor

                          ActiveRecordモデルのカラムを消すときにignored_columnsが必要な理由 - Progate Tech Blog
                        • Railsの複数DB機能で負荷を分散する - 弥生開発者ブログ

                          こんにちは。弥生で Misoca を開発している小坂と申します。インターネットには kosappi という名前で存在しています。 前回ご紹介した みんなのコンピュータサイエンス は読んでいただけたでしょうか? 9月末で事業年度が終わる会社は多いかと思います。みなさんは無事に10月を迎えることはできましたか?私は有給休暇の日数が付与されて、とても良い気分です 🏝 今回は、Rails の複数 DB 機能を利用して9月末の高負荷を乗り切った話を紹介いたします。 🔥 月末の高負荷 Misoca は請求書作成ソフトということもあり、月末にアクセスが増加します。 ユーザの増加や、機能が充実したことにより、DB への負荷も増加しています。8月末の負荷は DB の限界に近い値でした。 特に、文書の一覧や検索などの参照系のクエリの比重が高く、機能の充実によってクエリ自体も重いものになっており、問題になっ

                          • Introducing FastPage: Faster offset pagination for Rails apps — PlanetScale

                            We’d like to introduce FastPage, a new gem for ActiveRecord that applies the MySQL “deferred join” optimization to your offset/limit queries. Here is a slow pagination query in Rails:

                              Introducing FastPage: Faster offset pagination for Rails apps — PlanetScale
                            • 【Rails】accepts_nested_attributes_forを使用しない方が良い理由とその代替方法

                              「Rails 子モデル 保存」 とかでググるとたくさんのaccepts_nested_attributes_forを使用した記事をお見かけすると思います。 そんなaccepts_nested_attributes_forですが、いま自分が働いている会社では使用することを禁じられており、なるべくクリーンな実装を心がけるということを日々意識しております。 そんなこともあり、改めて使用してはいけないものの正体を調べてみました。 accepts_nested_attributes_forとは何か 一言でいえば、「親モデルに紐づくレコードの保存を簡単にできるようにするためのもの」 です。 具体例で見てみましょう。 下記に2つモデルがあり、親モデルであるAuthorの作成と同時にそれに紐づくBookモデルのレコードも作成するというイメージです。 Author(著者) Book(本) # 著者モデル c

                                【Rails】accepts_nested_attributes_forを使用しない方が良い理由とその代替方法
                              • RailsとClean Architectureに関する考察 - Qiita

                                Railsのアプリケーションの設計について考える機会があったのでその過程で考えたこととをまとめておきます。 (2022/03/22) 追記 この記事の発展版、Layered Architectureの勘所という記事を書きました。 Railsをやってた頃はActiveRecordの便利さについ流されてしまいましたが、今やるなら ActiveRecordのモデルとEntityの分離する Entityはimmutableにする というあたりをもっと徹底するのが良いと思います。 背景 Railsをメインで使用している企業で新規のWebアプリケーションを0ベースで作ることになった。 その企業はRailsでかなり大規模なアプリを運用しており、Rails自体の知見は十分。 一方で伝統的なRailsでの開発手法に大規模開発の限界も感じており、この機会に設計のPrcaticeを模索したいという要望もあります

                                  RailsとClean Architectureに関する考察 - Qiita
                                • シン・ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法|TechRacho by BPS株式会社

                                  こんにちはgengenです。 初めに言ってしまうと、Ruby2.7の始端無しRange(beginless range)がActiveRecordのwhereに渡せるので日付検索が全部Rangeできて便利というだけの記事です。 ActiveRecordのwhereにはRangeが渡せる 「ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法」で詳しく紹介されてますが、そもそもwhereのハッシュ引数の値にRangeオブジェクトが渡せて、BETWEENと不等号を使い分けて上手いことクエリを作ってくれます。 User.where(activated_on: Date.new(2022,1,1)..Date.new(2022,12,31)).to_sql => "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"activate

                                    シン・ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法|TechRacho by BPS株式会社
                                  • 並列処理でActiveRecordの処理時間を短縮する - patorashのブログ

                                    ここ最近は並列化による処理速度アップを色々試しています。 Railsプロジェクトのデータに少々不備があることに気づいたので、それを修正するために該当データを抽出しようと思って雑にループを回したら、データ量が多いせいか、全然終了しませんでした。業を煮やした私は、これも並列化してしまおう!と思って並列化の情報を集めることに。 Rubyでの並列処理は、parallelというgemを使うと並列処理がすごく簡単にできました。 github.com parallelのいいところ parallelのいいところは、 並列処理したい対象の配列データを渡すだけでいい map, each, any?, all? などに対応している マルチプロセス、マルチスレッドの両方に対応している というところでしょうか。 簡単な使い方の例 Parallelに対して、配列を渡したら、自動的にCPUの数だけプロセスをフォークして

                                      並列処理でActiveRecordの処理時間を短縮する - patorashのブログ
                                    • BigBinary Blogs on Rails 6.1

                                      Stay up to date with our blogs. Sign up for our newsletter.We write about Ruby on Rails, ReactJS, React Native, remote work,open source, engineering & design.

                                        BigBinary Blogs on Rails 6.1
                                      • Rails 7のenumに新しい構文が導入(翻訳)|TechRacho by BPS株式会社

                                        概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rails introduces new syntax for enum | Saeloun Blog 原文公開日: 2021-02-26 著者: Deepak Mahakale サイト: Saeloun Blog | Ruby on Rails Consulting Company based in San Francisco and Boston Rails 7の最新の変更で、enum定義に新しい構文が導入されました(#41328)。 変更前 従来の構文では、以下のように「enumの名前」「enumの値」「enumのオプション」を渡せます。 class Post < ActiveRecord::Base enum status: [ :draft, :published, :archived ], _prefix: true,

                                          Rails 7のenumに新しい構文が導入(翻訳)|TechRacho by BPS株式会社
                                        • Railsのデザインパターン: Valueオブジェクト

                                          Ruby on RailsアプリケーションのコードをリファクタリングするためのデザインパターンのひとつにValueオブジェクトというものがあります。このパターンをうまく導入することで、モデルが肥大化するFat Modelという問題を防ぐことができます。 この記事ではValueオブジェクトとはなにか、導入する必要性や導入方法について書いていきます。

                                            Railsのデザインパターン: Valueオブジェクト
                                          • Rails: 認証gem 'Rodauth'を統合するrodauth-railsを開発しました(翻訳)|TechRacho by BPS株式会社

                                            概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: What It Took to Build a Rails Integration for Rodauth | Janko's Blog 原文公開日: 2022/10/12 原著者: Janko Marohnić 日本語タイトルは内容に即したものにしました。 参考: 週刊Railsウォッチ20221025 RodauthをRailsと統合するのに必要だったこと 以下のrodauth-rails READMEもどうぞ。 Rails: 認証gem ‘rodauth-rails’ README(翻訳) Rodauthが登場した当時の既存のソリューションは、Rails(DeviseやSorceryの場合)か少なくともActive Record(Authlogicの場合)が必要だったので、ついにRailsに縛られないフル機能の認証フレームワ

                                              Rails: 認証gem 'Rodauth'を統合するrodauth-railsを開発しました(翻訳)|TechRacho by BPS株式会社
                                            • Rails adds support for Fiber-safe ActiveRecord ConnectionPools

                                              Rails adds support for Fiber-safe ActiveRecord ConnectionPools Feb 23, 2022 One of the major focuses for Ruby 3 was parallelism and concurrency. A trailblazer in this space is the use of Ruby Fibers. Fibers are a concurrency mechanism that allows us to pause, loop, and resume execution while consuming far fewer context switches. It consumes less memory than threads while giving the developer contr

                                                Rails adds support for Fiber-safe ActiveRecord ConnectionPools
                                              • Support `where` with comparison operators (`>`, `>=`, `<`, and `<=`) by kamipo · Pull Request #39613 · rails/rails

                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                  Support `where` with comparison operators (`>`, `>=`, `<`, and `<=`) by kamipo · Pull Request #39613 · rails/rails
                                                • Ruby on Rails 6.1 の水平シャーディング対応 & Octopusからの移行事例 - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

                                                  この記事は Akatsuki Advent Calendar 2020 の20日目の記事です。 はじめに ゲームサーバでは大量のユーザーデータなどを取り扱うため、データベースの負荷分散のために水平シャーディング(水平分割)が行われることがあります。 アカツキでも、これまで Ruby on Rails や Elixir 等でゲームサーバを開発する中で、それぞれの方法で水平分割を行ってきています。 さて、先日リリースされた Ruby on Rails 6.1 では、待望の水平シャーディング機能が標準でサポートされました。 早速使っていきたいところですが、これまで別の方法で水平シャーディングを実現していたアプリケーションを移行するにあたってはいくつか課題があるため、 それをどう解決するかの一例をご紹介したいと思います。 また、その解決の一環で利用した Ruby の BasicObject クラス

                                                    Ruby on Rails 6.1 の水平シャーディング対応 & Octopusからの移行事例 - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)
                                                  • Rails: Active RecordでRepositoryパターンを実装する(翻訳)|TechRacho by BPS株式会社

                                                    概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Repository implementation on ActiveRecord | Arkency Blog 原文公開日: 2023/12/28 原著者: Paweł Pacana Repositoryは本質的に、ドメインオブジェクトをその永続化方法から切り離して、それらにアクセスするための限定的なインターフェイスを提供します。Repositoryは戦術的なパターンの一種であり、本記事の導入部で私が説明したい内容よりずっと詳しくMartin FowlerやEric Evansが解説しています。Repositoryパターンが推し進めるものは、いわゆるActive Recordパターンと真逆です。なぜパターンをわざわざ別のものに変換するのでしょうか? Active Recordパターンは両刃の剣であり、その問題はまさに最大の長所

                                                      Rails: Active RecordでRepositoryパターンを実装する(翻訳)|TechRacho by BPS株式会社
                                                    • Rails connections, pools and handlers

                                                      Rails connections, pools and handlers … and check why 5600+ Rails engineers read also this Rails connections, pools and handlers In Active Record there are db connections, connection pools and handlers. To put it shortly: Connection Handler has many Connection Pools has many Connections Connection The connection object is the one you most often directly interact with. You can get hold of it via Ac

                                                        Rails connections, pools and handlers
                                                      • RailsのActiveRecord::AttributeMethods::Dirtyを使ってみた - stmn tech blog

                                                        はじめに 背景 ActiveRecord::AttributeMethods::Dirtyとは メソッド一覧 メソッド名の変遷 活用に向けた検証 検証に使用したモデル Dirtyの活用例 実現したかったこと/実装例 Dirtyの活用したサンプルコード おわりに 参考 はじめに はじめまして、スタメンでエンジニアをしているショウゴです。普段は、バックエンドグループでRuby on Railsを用いてバックエンドの開発を主に担当しています。 今回の記事では、ActiveRecordのattributeの変更状況を確認できるRailsのActiveRecord::AttributeMethods::Dirtyモジュールの使い方の検証結果と活用例を紹介します。 背景 今回、特定のカラムの値を変化させて、ステータスの変更・管理を行っているモデルに対して新たなバリデーションを実装する作業の中で、特定の

                                                          RailsのActiveRecord::AttributeMethods::Dirtyを使ってみた - stmn tech blog
                                                        • 【Rails 6.1】AS 句で作ったカラムに DB の型情報はない - ESM アジャイル事業部 開発者ブログ

                                                          本記事の環境 Rails 6.1.1 結論 9sako6 です。突然ですが、 AS 句で作ったカラムに DB の型情報はありません。 次の例をご覧ください。スキーマに日時型で定義されている created_at カラムは TimeWithZone オブジェクトが返るのに対し、AS 句で作った latest_created_at カラムは文字列が返されます。 > Foo.select('created_at').first.created_at Foo Load (0.2ms) SELECT "foos"."created_at" FROM "foos" ORDER BY "foos"."id" ASC LIMIT ? [["LIMIT", 1]] => Mon, 08 Feb 2021 16:56:10.531831000 JST +09:00 # ActiveSupport::TimeW

                                                            【Rails 6.1】AS 句で作ったカラムに DB の型情報はない - ESM アジャイル事業部 開発者ブログ
                                                          • 監査ログをファイルに記録するためのGemを公開しました - 食べチョク開発者ブログ

                                                            こんにちは。 食べチョクの開発を副業でお手伝いしているプログラマーの花村です。 監査ログをJSONL(JSON Lines)のファイルに記録するためのGemのAuditLoggableを作成してrubygems.orgで公開しました。 ソースコードもGitHubで公開しています。 ​ rubygems.org github.com なぜ開発したのか 食べチョクでは監査ログを記録するためにAuditedを利用していました。 AuditedはActiveRecordのコールバックを利用してモデルの変更を手軽にRDBに記録してくれる大変便利なGemです。 しかしRDBに記録するためテーブルサイズが肥大化しパフォーマンスに影響を与える場合があるというデメリットもあります。 食べチョクでは注文数の増加に伴ってこの問題に直面しました。 これを解決するにあたり以下のようなアプローチが思いつきます。 監査

                                                              監査ログをファイルに記録するためのGemを公開しました - 食べチョク開発者ブログ
                                                            • Railsガイドにきちんと目を通して新しい知識を得る - Active Recordの関連付け編 - - PLAY BALL

                                                              ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Active Recordの関連付けの章です。 railsguides.jp reload_xxxと、changerd?previously_changed? リンクはこちら reload_xxx テストを書くときに、xxx.reloadみたいな使い方はよくしていましたが、関連モデルに使えるのは知りませんでした。 # (コンソールAで) book.user #=> #<User id: 1, email: "sample@example.com", created_at: ...> # (別のコンソールBで) User.find(1).update(email: 'sample02@e

                                                                Railsガイドにきちんと目を通して新しい知識を得る - Active Recordの関連付け編 - - PLAY BALL
                                                              • Goodbye ActiveRecord!

                                                                At Aircall, we are dealing with a distributed Rails Legacy monolith. We are now splitting it progressively into lightweight Ruby-Sinatra microservices, and in order not to reproduce errors from the past, we started to implement new Architecture philosophies like Clean Architecture and Domain Driven Design. ROM was a really good match to us, as it fits really well in those philosophies. In order to

                                                                  Goodbye ActiveRecord!
                                                                • A Case for Query Objects in Rails

                                                                  You may have heard of query objects before: their main purpose is to encapsulate a database query as a reusable, potentially composable, and parameterizable unit. When is it best to reach for them and how can we structure them? Let’s dive into this topic. Reusing query filters In Rails, it’s very easy to create database queries. Provided that we’ve defined an Active Record model, we can easily con

                                                                    A Case for Query Objects in Rails
                                                                  • activerecord-importのimportを速くする

                                                                    Railsで大量データのインポート処理が必要な場合、activerecord-importを使う事が多いかと思います。このgemは複数のINSERTを1つのSQLにまとめてくれる(multi-row-insertを行う)ので、1データ毎に1つのINSERTを行うより高速に動作します。 activerecord-importのimportメソッドはデフォルトのままでも十分に早いのですが、それでも速度的に厳しい、という場合もあるかと思います。activerecord-importのimportメソッドは引数により速度が変化しますので、そのような場合引数の見直しを行ってみても良いかもしれません。 ではどのようにすればimportが高速に動作するのでしょうか? importにmodelではなくcolumn, valueを指定するimportの引数にはmodel objectの配列、または colu

                                                                      activerecord-importのimportを速くする
                                                                    • ActiveRecordのvalidatesで表示されるエラーメッセージのフォーマットを変更する - Qiita

                                                                      何に困っているか ActiveRecordのvalidatesでエラーになった時に表示されるメッセージを%{attribute}%{message}ではないフォーマットにしたい。 例えば、User.nameのvalidatesエラーでこの名前は1文字以上入力してください。みたいなエラーメッセージを表示したい。 さらに、そのフォーマットを適用するスコープを限定したい。 validatesのエラーメッセージを変更するには 0. サンプルアプリの概要 今回の環境はruby:2.5.2、rails:6.0.0です。 Userモデルを持つアプリを用意します。

                                                                        ActiveRecordのvalidatesで表示されるエラーメッセージのフォーマットを変更する - Qiita
                                                                      • Rails Active Record における rewhere の使い所 - ボクココ

                                                                        ども、@kimihom です。 今回は ActiveRecord でもおそらくマイナーなメソッドであろう rewhere を使う機会があったのでメモとして残しておく。 今回の利用ケース とあるデータの取得条件でフィルタリングをして統計として表示するページを想像してみて欲しい。そこではあらゆる where 条件で絞り込みを指定している。そしてもちろん取得する件数や並びの順番なども指定している。 # 今日更新された特定の会社に所属するコンタクトを作成日時の新しい順で30件 @records = Contact.where( "updated_at between ? and ?", DateTime.now.beginning_of_day, DateTime.now.end_of_day ) @records = @records.where(company_id: company.id)

                                                                          Rails Active Record における rewhere の使い所 - ボクココ
                                                                        • Rails 一意性制約のかけ方|タケノリ

                                                                          Railsでアプリ開発中にバリデーションをかけようと思い、 一意性制約(テーブル内で重複するデータを禁止する)の記述について、ネットで調べていると、 unique:true uniqueness: true上の2つで出てきて、どっち!?違いはなに!?ってなったんで調べてみました。 まず前提として一意性制約には以下の2パターンのやり方があるという事。 ①アプリケーション側に設定➔モデルに記述(uniquness:true) ②DB側に設定➔マイグレーションファイルに記述(unique:true) まず①についてはこんな書き方 class User < ApplicationRecord validates :name, uniqueness: true end user.rb 続いて②についてはこんな感じ class AddEmailToUsers < ActiveRecord::Migra

                                                                            Rails 一意性制約のかけ方|タケノリ
                                                                          • ActiveRecord各メソッドのクエリ実行タイミングについて - Qiita

                                                                            概要 ActiveRecordの各検索メソッドがどのタイミングで実際にリクエストを投げるのか不明だったので調べてみた。 まず前提として、メソッドは大きく以下の二種類に分けられる。 DBへのリクエストを発行するメソッド DBへのリクエストは発行せず、ActiveRecord::Relationのオブジェクトを返すメソッド 結論 まずはじめに結論から書くと、以下の違いが、リクエストの有無を決めている。 ActiveRecord::FinderMethodsに実装されているメソッド find, find_by, take, first, last, exists? すぐにクエリを発行し、データベースにアクセスし、レコード(Modelのインスタンス or インスタンスの配列)を返す。 それ以外の検索メソッド(where, limit, など) ActiveRecord::Relationのオブジェ

                                                                              ActiveRecord各メソッドのクエリ実行タイミングについて - Qiita
                                                                            • 4 Non-standard Ways to Fix N+1 Queries in Rails

                                                                              4 Non-standard Ways to Fix N+1 SQL Queries in Rails Updated Apr 6, 2021 6 minute read I’m not sure if the world needed another post about N+1 queries in Ruby on Rails. To make up for the cliche topic, I’ll describe less common solutions to this problem. Read on if you want to learn how to reduce the number of cascading N+1 SQL queries without using includes or additional table join operations. N+1

                                                                                4 Non-standard Ways to Fix N+1 Queries in Rails
                                                                              • Rails 6 adds delete_by and destroy_by methods.

                                                                                Rails 6 adds delete_by and destroy_by methods. Oct 15, 2019 I am a seasoned developer with over 9 years of experience in Ruby on Rails and Golang. My passion lies in tackling complex data structures and algorithm problems, always pushing myself to learn and grow. In my downtime, I find solace in the pages of books and the soothing sounds of a guitar. But I'm not just a one-trick pony! I love to st

                                                                                  Rails 6 adds delete_by and destroy_by methods.
                                                                                • Rails 7: has_many :through関連付けにdisable_joins: trueオプションが追加(翻訳)|TechRacho by BPS株式会社

                                                                                  2021.05.19 Rails 7: has_many :through関連付けにdisable_joins: trueオプションが追加(翻訳) 私たちはRailsアプリケーションで、マルチプルデータベースを多用しています。Rails 6からマルチプルデータベースへの接続が簡単に行えるようになりました。 ここで以下のユースケースを考えてみましょう。 1人のユーザーは複数の記事(post)を作成できる 記事を見ているユーザーは誰でも記事にコメントを付けられる(いわゆるcroud-sourcedなコメント) この場合コメントが急速に増加する可能性があり、別の種類のデータ管理アプローチが必要になるかもしれないので、croud-sourcedなコメントを別のデータベースに保存することが考えられます。 この場合のdatabase.ymlは以下のようになるでしょう。 default: &defaul

                                                                                    Rails 7: has_many :through関連付けにdisable_joins: trueオプションが追加(翻訳)|TechRacho by BPS株式会社