なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2017/10/27)

2017/10/27分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activemodel/CHANGELOG.md


Merge pull request #30674 from prognostikos/allow_procs_for_length_validator

activemodel/lib/active_model/validations/length.rbの修正です。

length validatorのオプションに、Proc、及びSymbolを渡せるよう修正しています。

class Topic
  include ActiveModel::Validations

  attr_accessor :title, :foo

  validates :title, length: { maximum: ->(topic) { topic.max_length_for_title } }

  def max_length_for_title
    if foo
      5
    else
      10
  end
end

これにより、上記のように、メソッドの結果をlenghtに指定出来るようになります。


fix initial count

activerecord/lib/active_record/associations/alias_tracker.rbの修正です。

Associations::AliasTracker.initial_count_forメソッドでjoinがHashだった場合、かつ、値が取得出来なかった場合の対応を追加しています。

          elsif join.is_a?(Hash)
-            join[name]
+            join.fetch(name, 0)
           else

元のコードだとnilが返ってしまうのですが、nilだと以降のコードでエラー(NoMethodError: undefined method +' for nil:NilClass)が発生する可能性がある為、明示的に初期値を指定するよにしています。


delegate scope for

activerecord/lib/active_record/reflection.rbの修正です。

PolymorphicReflectionクラスでscope_forメソッドをreflectiondelegateするよう修正しています。delegateしておかないtscope_forメソッドの呼び出しでエラーになってしまう為。


Fix typo s/trough/through/

activerecord/test/cases/associations/has_many_through_associations_test.rbの修正です。

throughtroughにタイポしていたのを修正しています。


Fix all s/trough/through/

activerecord/test/cases/associations/has_many_through_associations_test.rbの修正です。

throughtroughにタイポしている箇所が他にもあったのを修正しています。


Remove CHANGELOG entry for PR #28681 [ci skip]

activerecord/CHANGELOG.mdの修正です。

Rails 5.1系にバックポートされている対応のエントリーを削除しています。