Skip to content

Inconsistent results for has_many relation each_rel/rels #1696

@petergebala

Description

@petergebala

Looks like calling each_rel or rels affects the relation and removes objects from it.

Previously we were using:
Neo4j database version: 4.4
ActiveGraph version: 11.1.0.alpha.4
Neo4j-driver-ruby: 4.4.3

Code below was working as expected.

Now we try to upgrade gem versions to:
Neo4j database version: 4.4
ActiveGraph version: 11.3.1
Neo4j-driver-ruby: 4.4.4

Code example (inline, gist, or repo)

class Skill
  # ...
  has_many :out, :categories, model_class: :SkillCategory, rel_class: :SkillInCategory 
  # ...
end

class SkillCategory < Category
  has_many :in, :contents, model_class: :Skill, rel_class: :SkillInCategory
end

# Later we have test to check if we create uniq relations:
skill.categories << skill_category
skill.categories << skill_category
skill.categories << skill_category

skill.categories.each_rel.count == 1
skill.categories == [skill_category] # Fails, skill.categories relation is empty.
# Problem is with the order of the operations. Looks like calling `each_rel` replaces skill_categories with empty array.
# Real output from console:
[13] pry(#<RSpec::ExampleGroups::Skill::UniqueCategories>)> skill.categories
=> #<AssociationProxy Skill#categories [#<SkillCategory _global_id: "test-skill-category_1000001", _source_id: "1000001", _source_type: "test-skill-category", description: nil, name: "Organized systemic analyzer">]>
[14] pry(#<RSpec::ExampleGroups::Skill::UniqueCategories>)> skill.categories.each_rel.size
=> 1
[15] pry(#<RSpec::ExampleGroups::Skill::UniqueCategories>)> skill.categories
=> #<AssociationProxy Skill#categories []>
[16] pry(#<RSpec::ExampleGroups::Skill::UniqueCategories>)> skill.reload
=> #<Skill _global_id: "test-skill_1000001", _source_id: "1000001", _source_type: "test-skill", name: "Integrated Contextually-Based Ability">
[17] pry(#<RSpec::ExampleGroups::Skill::UniqueCategories>)> skill.categories
=> #<AssociationProxy Skill#categories [#<SkillCategory _global_id: "test-skill-category_1000001", _source_id: "1000001", _source_type: "test-skill-category", description: nil, name: "Organized systemic analyzer">]>
[18] pry(#<RSpec::ExampleGroups::Skill::UniqueCategories>)> skill.categories.rels.size
=> 1
[19] pry(#<RSpec::ExampleGroups::Skill::UniqueCategories>)> skill.categories
=> #<AssociationProxy Skill#categories []>

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