タグ

ActiveRecordに関するhiro14akiのブックマーク (7)

  • ActiveRecordにはそれまでのorderを無視して上書きするreorderというメソッドがある - コード日進月歩

    一体どういう意図でつくったのかわからないが見つけたのでメモがてら。打ち消しの記述なんて危険しか孕んでないから、おそらくコレは見かけたら駆除したほうがいい系のメソッドだとは思っている。 環境 rails (5.2.0) 例 例えば普通にorderすると以下のようにクエリが吐き出される User.order(:id) # User Load (0.6ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC 複数指定すると以下のように重ねてORDER BYをかける User.order(:id).order(:updated_at) # User Load (5.2ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC, `users`.`updated_at` ASC

    ActiveRecordにはそれまでのorderを無視して上書きするreorderというメソッドがある - コード日進月歩
    hiro14aki
    hiro14aki 2019/01/20
    ソート打ち消し
  • ActiveRecord の attribute 更新方法まとめ - Qiita

    ActiveRecord の attribute 更新方法ってどんなものがあって、それぞれどんな違いがあるかご存じですか? 案外色々とあったので表にまとめてみました。リファレンスやソースコードを参考にしつつ、Rails 4.2 でテストしています。 単一の attribute 更新 メソッド 保存 バリデーション(*1) コールバック(*2) readonly チェック(*3) updated_at の更新 補足 使用例

    ActiveRecord の attribute 更新方法まとめ - Qiita
  • ActiveRecord Association 覚え書き - Qiita

    概要 ActiveRecord の Association 周りの理解が曖昧。 整理のためにまとめておこうと思います。 随時加筆予定。 外部キーをどう持つか(子) User -(1:N)- Order な関係を考える。 Order が User の id を外部キーとして持つ場合、 子である Order の実装方法として以下の 3 パターンが考えられる。 Pattern DB column name association name

    ActiveRecord Association 覚え書き - Qiita
  • ActiveRecordを試すときに便利なやつ - r7kamura - Medium

    手元で ActiveRecord を試したいときに、いちいちデータベースを用意したり、再現性のあるコード片に整えたりするのは、結構な手間に感じてしまうかもしれません。この記事では、そういったケースで利用できる知識を幾つかまとめておこうと思います。 以下は今回題材に使うコード例で、これを上から順に説明していきます。 ActiveRecord で .count の挙動を試す例bundler/inlinebundler/inlineBundler 1.10 から追加された機能です。これを利用すると、Gemfile を独立したファイルとして用意することなく、スクリプトの中にその定義を埋め込めるようになります。 続くスクリプトがどのバージョンの Gem で動かせるのかということを明示でき、必要であればライブラリを実行時に自動的にインストールし、依存関係を調べて $LOAD_PATH を調整し、

  • ActiveRecordデータ処理アンチパターン / active-record-anti-patterns

    Rails Developers Meetup 2018: Day 2( https://techplay.jp/event/655769 )で行った発表の資料です。 ActiveRecordはWebエンジニア達が嫌う(?)SQLを書かずとも、Rubyオブジェクトで気軽にデータベースへアクセスできる魔法のようなツールです。しかし便利な反面、何も考えずにゴリゴリActiveRecordを使ってDBアクセスしていると、劇的に重たいクエリが発行されたり非効率的なクエリが量産されたりします。 発表ではそれらActiveRecordで陥りがちな罠をパターン化し、ActiveRecordデータ処理アンチパターンとして発表します。 ※発表では実際のサンプルコードとともにパフォーマンスの計測結果も紹介します。 --- Blog記事: http://blog.toshimaru.net/rdm2018-a

    ActiveRecordデータ処理アンチパターン / active-record-anti-patterns
  • Rails4で楽観的ロックを実装する - Rails Webook

    ActiveRecordでは、lock_versionというカラムを追加するだけで楽観的ロックを利用できます。 レコード単位でlock_versionを保持しているため、レコード単位での更新が競合した場合、ActiveRecord::StaleObjectError例外が発生します。 動作確認 Rails 4.1 ActiveRecord 4.1 目次 楽観的ロックとは 楽観的ロック(ロックバージョン)の実装 楽観的ロックの使い方 楽観的ロックを画面から扱う 1. 楽観的ロックとは楽観的ロックとは、基的には変更が競合しないだろうという状況に向いたロック手法です。 テーブルにロックバージョンカラムを持たせ、レコードを変更するたびにロックバージョンを更新し、更新しようとしたときにロックバージョンが異なっている場合には、更新の競合が発生したと判断しレコードを更新しないようにします。 Activ

    Rails4で楽観的ロックを実装する - Rails Webook
  • Rails4で悲観的ロックを実装する - Rails Webook

    ActiveRecordでは、lockとやlock!メソッドを使うことで悲観的ロックを実現することができます。 ロック自体は、基的にはSELECT … FOR UPDATEが発行されてロックがされますが、DBに依存するので実際に発行されるSQLコードを確認することが大切です。 動作確認 Rails 4.1 ActiveRecord 4.1 mysql2 0.3.7 MySQL Server 5.6.21 Mac OS X 10.10 目次 悲観的ロックとは MySQLの設定とモデルの準備 悲観的ロックの使い方 (WIP)悲観的ロックのテスト 悲観的ロックとは悲観的ロックとは、競合が発生する可能性が十分あるという状況に向いたロック手法です。 DB側でレコードをロックし、ロックされたレコードを更新できないようにします。 あまりに競合が発生する場合には、ロックにより処理が待たされる時間が多くな

    Rails4で悲観的ロックを実装する - Rails Webook
  • 1