Skip to content

Enchance chained where calls. #109

@durran

Description

@durran

When chaining two where criteria on the same field, former ones will be ignored, which should be a bug.

For example, User.where(role: 1).where(role: 2) now generates selector: {"role"=>2}, but the expected result should be selector: {"role"=>{"$in"=>[]}}.

Other examples:

User.where(role: 1).in(role: [2, 3]) generates selector: {"role"=>{"$in"=>[]}}, this is correct. But User.in(role: [2, 3]).where(role: 1) generates selector: {"role"=>1}, which should not be right.

User.in(role: [1, 2]).in(role: [2, 3]) can correctly generate selector: {"role"=>{"$in"=>[2]}}, but User.where(:role.in => [1, 2]).where(:role.in => [2, 3]) generates selector: {"role"=>{"$in"=>[2, 3]}}.

See mongoid/mongoid#4002

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions