2014/04/14分のコミットです。
複数プロセスで処理を行った際に、counter_cacheが誤った値になるバグの修正が含まれています。
Merge pull request #14592 from laurocaetano/equality_between_relation_and_collection_proxy
Relation
とCollectionProxy
を比較した際の結果を統一するようにしています。
author.posts == Post.where(author_id: author.id) # => true Post.where(author_id: author.id) == author.posts # => false
上記のようになっていたのを、2つめについてもtrueになるように修正。activerecord/lib/active_record/association_relation.rb
に==
メソッドを追加しています。
[ci skip] Improve doc, fix grammatical issue
rails guide及びコメントの修正。文法的に誤っている箇所を修正しています。
[ci skip] Use plain underscore instead of "_".
こちらもdocの修正。"_"を"_"に修正しています。元々エスケープとして"_"を指定していたように見えるんですが、はて、何故OKに。
Write the failing test case for concurrent counter cache
カウンターキャッシュのバグ修正。の、テストコード追加のコミットです。
SQLのDELETEは冪等性が保証されており、何度繰り返し実行しても、結果はいつも成功します。で、カウンターキャッシュは、DELETEが成功したらカウンターをデクリメントするようになっていた為、以下のシナリオの場合に問題がおきます。
- Process 1 load the record
- Process 2 load the record
- Process 1 destroy the record
- Process 2 destroy the record
Process1と2で同じレコードをloadしている場合、同じレコードをdestroy(delete)しているので、実際は1行しか削除されてないので、カウンターキャッシュ上は2回デクリメントされてしまう事になり、値が実際のレコードと異なってしまう、というバグです。
DELETEの成功/失敗ではなく、影響があった行数(affected_rows
)を見るよう修正されています。
Make counter cache decrementation on destroy idempotent
上記カウンターキャッシュのバグ修正の、実際のコード修正です。
Disable assest cache store in docs [ci skip]
rails guideの修正です。assets cache storeを無効にする方法の説明を削除しています。
read_attribute is public, so we should just call it
read_attribute
はパブリックメソッドで直接呼べるので、send
を削除しています。
again, read_attribute is public, so just call it
上記コミット同じです。類似箇所修正。
- Fix lingering reference to :text
instead of the newer :plain
rails guideの修正です。任意の文字列を表示させたいとき、render
メソッドに:text
オプションを指定していたのですが、今は:plain
オプションの方が推奨なので、guideも:plain
を使用するよう修正しています。
Just call read_attribute, no need to use send
.
二つ上のコミットの、類似箇所修正。
docs, double meaning of serialize
argument. Closes #14284.
activerecord/lib/active_record/attribute_methods/serialization.rb
のコメント及び変数名の修正です。
serialize
メソッドの第二引数には、class名、または.load
/ .dump
メソッドを実装したオブジェクトを指定する仕様になっていたのですが、せの説明が足りてなかたのを追加しています。
# Serialize preferences using JSON as coder. class User < ActiveRecord::Base serialize :preferences, JSON end # Serialize preferences as Hash using YAML coder. class User < ActiveRecord::Base serialize :preferences, Hash end
こういうことか。
collection_check_boxes
respects :index
option for the hidden filed name.
collection_check_boxes
のoptions引数にindex
を指定した際に、hidden fieldにindex
に指定された値が反映されていなかったのを修正。
バグ、というか機能拡張か。