• S
    Correct through associations using scopes · bc6ac860
    Sean Griffin 提交于
    The changes introduced to through associations in c80487eb were quite
    interesting. Changing `relation.merge!(scope)` to `relation =
    relation.merge(scope)` should in theory never cause any changes in
    behavior. The subtle breakage led to a surprising conclusion.
    
    The old code wasn't doing anything! Since `merge!` calls
    `instance_exec` when given a proc, and most scopes will look something
    like `has_many :foos, -> { where(foo: :bar) }`, if we're not capturing
    the return value, it's a no-op. However, removing the `merge` causes
    `unscope` to break.
    
    While we're merging in the rest of the chain elsewhere, we were never
    merging in `unscope` values, causing a breakage on associations where a
    default scope was being unscoped in an association scope (yuk!). This is
    subtly related to #20722, since it appears we were previously relying on
    this mutability.
    
    Fixes #20721.
    Fixes #20727.
    bc6ac860
可在Tags中查看这些版本中当前仓库的状态.
CHANGELOG.md 26.1 KB