@@ -24,40 +24,39 @@ class FindById < Base
2424 RESTRICT_ON_SEND = %i[ take! find_by_id! find_by! ] . freeze
2525
2626 def_node_matcher :where_take? , <<~PATTERN
27- (send
28- $(send _ :where
27+ (call
28+ $(call _ :where
2929 (hash
3030 (pair (sym :id) $_))) :take!)
3131 PATTERN
3232
3333 def_node_matcher :find_by? , <<~PATTERN
3434 {
35- (send _ :find_by_id! $_)
36- (send _ :find_by! (hash (pair (sym :id) $_)))
35+ (call _ :find_by_id! $_)
36+ (call _ :find_by! (hash (pair (sym :id) $_)))
3737 }
3838 PATTERN
3939
4040 def on_send ( node )
4141 where_take? ( node ) do |where , id_value |
4242 range = where_take_offense_range ( node , where )
43- bad_method = build_where_take_bad_method ( id_value )
4443
45- register_offense ( range , id_value , bad_method )
44+ register_offense ( range , id_value )
4645 end
4746
4847 find_by? ( node ) do |id_value |
4948 range = find_by_offense_range ( node )
50- bad_method = build_find_by_bad_method ( node , id_value )
5149
52- register_offense ( range , id_value , bad_method )
50+ register_offense ( range , id_value )
5351 end
5452 end
53+ alias on_csend on_send
5554
5655 private
5756
58- def register_offense ( range , id_value , bad_method )
57+ def register_offense ( range , id_value )
5958 good_method = build_good_method ( id_value )
60- message = format ( MSG , good_method : good_method , bad_method : bad_method )
59+ message = format ( MSG , good_method : good_method , bad_method : range . source )
6160
6261 add_offense ( range , message : message ) do |corrector |
6362 corrector . replace ( range , good_method )
@@ -75,19 +74,6 @@ def find_by_offense_range(node)
7574 def build_good_method ( id_value )
7675 "find(#{ id_value . source } )"
7776 end
78-
79- def build_where_take_bad_method ( id_value )
80- "where(id: #{ id_value . source } ).take!"
81- end
82-
83- def build_find_by_bad_method ( node , id_value )
84- case node . method_name
85- when :find_by_id!
86- "find_by_id!(#{ id_value . source } )"
87- when :find_by!
88- "find_by!(id: #{ id_value . source } )"
89- end
90- end
9177 end
9278 end
9379 end
0 commit comments