Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fix #694] Mark Rails/FindEach as unsafe #972

Merged
merged 1 commit into from
Apr 4, 2023

Conversation

koic
Copy link
Member

@koic koic commented Apr 3, 2023

Fixes #694 and #397.

This PR marks Rails/FindEach as unsafe.


Before submitting the PR make sure the following are checked:

  • The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
  • Wrote good commit messages.
  • Commit message starts with [Fix #issue-number] (if the related issue exists).
  • Feature branch is up-to-date with master (if not - rebase it).
  • Squashed related commits together.
  • Added tests.
  • Ran bundle exec rake default. It executes all tests and runs RuboCop on its own code.
  • Added an entry (file) to the changelog folder named {change_type}_{change_description}.md if the new code introduces user-observable changes. See changelog entry format for details.
  • If this is a new cop, consider making a corresponding update to the Rails Style Guide.

Fixes rubocop#694 and rubocop#397.

This PR marks `Rails/FindEach` as unsafe.
@koic koic force-pushed the mark_rails_find_each_as_unsafe branch from a63dfe2 to f5aa590 Compare April 3, 2023 17:27
@koic koic merged commit 9ac7a15 into rubocop:master Apr 4, 2023
@koic koic deleted the mark_rails_find_each_as_unsafe branch April 4, 2023 15:38
# @safety
# This cop is unsafe if the receiver object is not an Active Record object.
# Also, `all.each` returns an `Array` instance and `all.find_each` returns nil,
# so the return values are different.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@koic I noticed there's also another case, which is the presence/absence of ordering, and whether one can order by primary key. (That's only relevant when you start batching.)

Should that be added as well?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have ActiveRecords with nil primary keys and replacing each with find_each on these broke our queries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Rails/FindEach not safe-auto-correct
3 participants