• R
    Support merging option `:rewhere` to allow mergee side condition to be replaced exactly · f6fb3271
    Ryuta Kamizono 提交于
    Related #39236.
    
    `relation.merge` method sometimes replaces mergee side condition, but
    sometimes maintain both conditions unless `relation.rewhere` is used.
    
    It is very hard to predict merging result whether mergee side condition
    will be replaced or not.
    
    One existing way is to use `relation.rewhere` for merger side relation,
    but it is also hard to predict a relation will be used for `merge` in
    advance, except one-time relation for `merge`.
    
    To address that issue, I propose to support merging option `:rewhere`,
    to allow mergee side condition to be replaced exactly.
    
    That option will allow non-`rewhere` relation behaves as `rewhere`d
    relation.
    
    ```ruby
    david_and_mary = Author.where(id: david.id..mary.id)
    
    # both conflict conditions exists
    david_and_mary.merge(Author.where(id: bob)) # => []
    
    # mergee side condition is replaced by rewhere
    david_and_mary.merge(Author.rewhere(id: bob)) # => [bob]
    
    # mergee side condition is replaced by rewhere option
    david_and_mary.merge(Author.where(id: bob), rewhere: true) # => [bob]
    ```
    f6fb3271
可在Tags中查看这些版本中当前仓库的状态.
CHANGELOG.md 22.2 KB