タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

activerecordに関するyokojiのブックマーク (7)

  • ActiveRecordのように振る舞うオブジェクトでJSON生成を高速化 - Qiita

    こんにちは、freee ソフトウェアエンジニア @terashi58 です。 この記事は freee Engineers Advent Calendar 2015 7日目です。 ActiveRecord のパフォーマンス Rails の ActiveRecord 便利ですよね。 私はまだ Rails 一年生ですが、日々お世話になっています。 個人的には has_many とかの Relation と where に始まる QueryMethods が特にいい感じです。 しかしこの ActiveRecord、便利機能満載のためか非常に遅いことがしばしば。 プロファイルを取ると、たいていはコンストラクタの呼び出しが重いです。 特に index 処理では大量の AR オブジェクトを生成するためボトルネックになります。 index (show) 処理、特に出力がJSONの場合は、DB の値をほとん

    ActiveRecordのように振る舞うオブジェクトでJSON生成を高速化 - Qiita
  • RailsでModelをDBから分割・整理する - リア充爆発日記

    それなりの規模のRailsプロジェクトではよくFat Model問題とかFat Controller問題が課題になってくる。 で、Fat Model問題については、Concernsなどに振る舞いを切り出したり、そもそも「それって1つのテーブルに収める必要ある?」というものを分割するなどの対策がある。 後者については、http://kenn.hatenablog.com/entry/2014/03/05/081525 この記事がわかりやすいサンプルとしてUserモデルからProfileモデルをテーブルごと切り出す例を挙げている。 今僕が関わっているプロジェクトでも上記例のように姓名などはProfileに切り出してあり、その他も住所関連の情報をAddressに、「退会理由」みたいなめったにつかわない情報をExtraInfoに、といったように意味合いと使用頻度を考慮していくつか分割する設計になっ

    RailsでModelをDBから分割・整理する - リア充爆発日記
  • Rails(ActiveRecord)でデータベースへのコネクションプーリングをさせなくする - はまさき

    ActiveRecordを使ったRailsアプリは,デフォルトでデータベースへの接続をプールするようになっています. ActiveRecordユーザとしては待ちわびたぜ!的な機能らしいのですが,設定等でこれをdisableすることが出来ず,LVS+keepalivedを介する場合にはロードバランシングが最初の接続時にしか為されずがなかなか厄介です. 対策として思いついたのは プールした接続を早い周期で捨てる LVS+keepalivedではなく,MySQL Proxyでバランシングする(Proxyへの接続はプール) そもそも接続をプールさせない くらいでした. どうするのがセオリーなのかと調べてみると コネクションプーリングの話 - naoyaのはてなダイアリー 2006-09-03 など4年近く前に議論されていて,"あー,高速道路あるなあ"と,コネクション確立のコストを調べる前に「プール

    Rails(ActiveRecord)でデータベースへのコネクションプーリングをさせなくする - はまさき
  • 関連モデルの命名 - 鳩舎

    今日は Rails での『関連モデル』の名前について考える。 構造としてはこんな感じ。 ・ルーム(Room)に所属するユーザー(User) ・ルーム(Room)での管理者権限を持つユーザー(User) どちらの関連も N:N の関連。いわゆる has_may な感じ。 で、こういう時の命名って Room モデルと User モデルだから RoomUser とか UserRoom とかっていうモデルやテーブルを作りがちなのだけれど、今回は同様の形態の関連が2つあるのでちょっと微妙な事になりそう。 っていうか、まずもって RoomUser モデルってなんだよ。なんのモデルだよそれ。って感じなので名前を考える。 ルーム(Room)に所属するユーザー(User) 関連モデルのデータは大抵2つのフィールドを持っている。 Migration あたりから抜き出すと t.references :room

    関連モデルの命名 - 鳩舎
  • ActiveRecordが発行するSQLをフックして色々やるためのライブラリArproxyを公開しました - 昼メシ物語

    https://github.com/cookpad/arproxy http://rubygems.org/gems/arproxy これは何? Arproxyを使うと、ActiveRecordが発行したSQLDB Adapterによって実行される直前をフックすることができます。これによって、カスタマイズしたクエリログを出力したり、どこからクエリが発行されたのかをトレースしたりすることができるようになります。 Arproxyでは、DB Adapterのフック処理を以下のように定義します。これはクエリが実行されるたびにバックトレースを出力する例です。*1 class QueryTracer < Arproxy::Base def execute(sql, name=nil) Rails.logger.debug sql Rails.logger.debug caller(1).join(

    ActiveRecordが発行するSQLをフックして色々やるためのライブラリArproxyを公開しました - 昼メシ物語
  • accepts_nested_attributes_forを使用した際のcallbackの実行順序のまとめ

    ActiveRecordのaccepts_nested_attributes_forを使用して、親子関係にある複数のモデルを同時に永続化する場合の親および子のモデルでそれぞれに設定したcallbackが実行されるタイミングをまとめます。 ActiveRecord::NestedAttributesを使用すると、親のモデルと子のモデルを同時に保存することができます。NestedAttributes自体の使い方はRailscasts.comのNested Model Form Part 2のチュートリアル等を御覧ください。NestedAttributesは便利に使用することができますが、親のモデルと子のモデルでそれぞれに設定したcallbackやvalidationがどのような順序で実行されるか正しく把握していないと、細かな作業を行う際に困ります。そこで、NestedAttributesを使用

  • Active Record Query Interface — Ruby on Rails Guides

    This guide covers different ways to retrieve data from the database using Active Record. After reading this guide, you will know: How to find records using a variety of methods and conditions. How to specify the order, retrieved attributes, grouping, and other properties of the found records. How to use eager loading to reduce the number of database queries needed for data retrieval. How to use dy

    Active Record Query Interface — Ruby on Rails Guides
  • 1