forked from rubocop/rubocop-rails
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathactive_record_aliases.rb
44 lines (37 loc) · 1.07 KB
/
active_record_aliases.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true
module RuboCop
module Cop
module Rails
# Checks that ActiveRecord aliases are not used. The direct method names
# are more clear and easier to read.
#
# @example
# #bad
# Book.update_attributes!(author: 'Alice')
#
# #good
# Book.update!(author: 'Alice')
class ActiveRecordAliases < Base
extend AutoCorrector
MSG = 'Use `%<prefer>s` instead of `%<current>s`.'
ALIASES = {
update_attributes: :update,
update_attributes!: :update!
}.freeze
RESTRICT_ON_SEND = ALIASES.keys.freeze
def on_send(node)
method_name = node.method_name
alias_method = ALIASES[method_name]
add_offense(
node.loc.selector,
message: format(MSG, prefer: alias_method, current: method_name),
severity: :warning
) do |corrector|
corrector.replace(node.loc.selector, alias_method)
end
end
alias on_csend on_send
end
end
end
end