@@ -127,26 +127,28 @@ def define_model_callbacks(*callbacks)
127
127
private
128
128
129
129
def _define_before_model_callback ( klass , callback )
130
- klass . define_singleton_method ( "before_#{ callback } " ) do |*args , &block |
131
- set_callback ( :"#{ callback } " , :before , *args , &block )
130
+ klass . define_singleton_method ( "before_#{ callback } " ) do |*args , **options , &block |
131
+ options . assert_valid_keys ( :if , :unless , :prepend )
132
+ set_callback ( :"#{ callback } " , :before , *args , options , &block )
132
133
end
133
134
end
134
135
135
136
def _define_around_model_callback ( klass , callback )
136
- klass . define_singleton_method ( "around_#{ callback } " ) do |*args , &block |
137
- set_callback ( :"#{ callback } " , :around , *args , &block )
137
+ klass . define_singleton_method ( "around_#{ callback } " ) do |*args , **options , &block |
138
+ options . assert_valid_keys ( :if , :unless , :prepend )
139
+ set_callback ( :"#{ callback } " , :around , *args , options , &block )
138
140
end
139
141
end
140
142
141
143
def _define_after_model_callback ( klass , callback )
142
- klass . define_singleton_method ( "after_#{ callback } " ) do |*args , &block |
143
- options = args . extract_options!
144
+ klass . define_singleton_method ( "after_#{ callback } " ) do |*args , ** options , &block |
145
+ options . assert_valid_keys ( :if , :unless , :prepend )
144
146
options [ :prepend ] = true
145
147
conditional = ActiveSupport ::Callbacks ::Conditionals ::Value . new { |v |
146
148
v != false
147
149
}
148
150
options [ :if ] = Array ( options [ :if ] ) << conditional
149
- set_callback ( :"#{ callback } " , :after , *( args << options ) , &block )
151
+ set_callback ( :"#{ callback } " , :after , *args , options , &block )
150
152
end
151
153
end
152
154
end
0 commit comments