Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
@ainame user.articles.preload(:comments, :stocks_count) みたいにstocks_countのようなassociationを生やしており、stocks_countの内部実装はPreloaderが弄られていてIDだけ取ってる— 内製フレームワーク (@r7kamura) 2015, 8月 23 @ainame これを抽象化するために、Article.has_many(:stocks, counter: true) みたいにすると、article.stocksとarticle.stocks_countがほぼ同じSQLで同時に定義されるようになってる— 内製フレームワーク (@r7kamura) 2015, 8月 23 @ainame それを実現している実装がこれです / k0kubun/activerecord-precount https:
どうしても AR の query methods だけでは要求を満たせない場合の最後の手段として、find_by_sql メソッドがあります。皆さんよく使ってると思うのですが、戻り値のレコードからさらに association をロードしようとすると N+1 になるケースがあります。かといって User.preload(:comments).find_by_sql(sql) のようにしても期待通りには動きません。単純に preload 部分が無視されるだけです。 ではどのように書いたらよいでしょうか。 次のように書くと期待通りに動きます(Rails 4.2.1 で試しています)。 records = User.find_by_sql(sql) ActiveRecord::Associations::Preloader.new.preload( records, :comments ) re
ActiveRecord::Persistence becomes This is mostly useful in relation to single-table inheritance structures where you want a subclass to appear as the superclass. touch! touch, touch, updated_at に touch 親子関係のあるモデルで、子モデルを更新した時に親モデルのupdated_atも更新したくなった。 ActiveRecord::NoTouching no_touching Ruby on Rails 4.1 Release Notes #6(Active Record) touchを無効化する ActiveRecord::Base.no_touching が追加されました。 update Ra
はじめに kakurenboというgemはご存知でしょうか?paranoiaの欠点を克服すべく1年ほど前に私が開発を始めたgemです。(参考:Rails4と3で論理削除を行うためのGem Kakurenbo の紹介と今更論理削除Gemを実装した理由。 - 波打際のブログさん) issueやpullrequestを送信してくださる善意のコミッターの方々に支えられながら1年ほど保守をしてきました。その上で薄々は気がついていたのですが、どうしても認められなかった重大な欠点をハッキリと認識させられたのでポエムにしました。 論理削除gemの起源 kakurenboもparanoiaも、廃れてしまった acts_as_paranoid を再実装したものです。 これらのgemは導入するだけで、いつも使っているdestroyメソッドが論理削除メソッドに早変わりする素晴らしいgem...になるはずだったので
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く