@@ -179,14 +179,14 @@ def enum(name = nil, values = nil, **options)
179
179
return _enum ( name , values , **options )
180
180
end
181
181
182
- definitions = options . slice! ( :_prefix , :_suffix , :_scopes , :_default )
182
+ definitions = options . slice! ( :_prefix , :_suffix , :_scopes , :_default , :_instance_methods )
183
183
options . transform_keys! { |key | :"#{ key [ 1 ..-1 ] } " }
184
184
185
185
definitions . each { |name , values | _enum ( name , values , **options ) }
186
186
end
187
187
188
188
private
189
- def _enum ( name , values , prefix : nil , suffix : nil , scopes : true , **options )
189
+ def _enum ( name , values , prefix : nil , suffix : nil , scopes : true , instance_methods : true , **options )
190
190
assert_valid_enum_definition_values ( values )
191
191
# statuses = { }
192
192
enum_values = ActiveSupport ::HashWithIndifferentAccess . new
@@ -222,14 +222,14 @@ def _enum(name, values, prefix: nil, suffix: nil, scopes: true, **options)
222
222
223
223
value_method_name = "#{ prefix } #{ label } #{ suffix } "
224
224
value_method_names << value_method_name
225
- define_enum_methods ( name , value_method_name , value , scopes )
225
+ define_enum_methods ( name , value_method_name , value , scopes , instance_methods )
226
226
227
227
method_friendly_label = label . gsub ( /[\W &&[:ascii:]]+/ , "_" )
228
228
value_method_alias = "#{ prefix } #{ method_friendly_label } #{ suffix } "
229
229
230
230
if value_method_alias != value_method_name && !value_method_names . include? ( value_method_alias )
231
231
value_method_names << value_method_alias
232
- define_enum_methods ( name , value_method_alias , value , scopes )
232
+ define_enum_methods ( name , value_method_alias , value , scopes , instance_methods )
233
233
end
234
234
end
235
235
end
@@ -245,14 +245,16 @@ def initialize(klass)
245
245
private
246
246
attr_reader :klass
247
247
248
- def define_enum_methods ( name , value_method_name , value , scopes )
249
- # def active?() status_for_database == 0 end
250
- klass . send ( :detect_enum_conflict! , name , "#{ value_method_name } ?" )
251
- define_method ( "#{ value_method_name } ?" ) { public_send ( :"#{ name } _for_database" ) == value }
248
+ def define_enum_methods ( name , value_method_name , value , scopes , instance_methods )
249
+ if instance_methods
250
+ # def active?() status_for_database == 0 end
251
+ klass . send ( :detect_enum_conflict! , name , "#{ value_method_name } ?" )
252
+ define_method ( "#{ value_method_name } ?" ) { public_send ( :"#{ name } _for_database" ) == value }
252
253
253
- # def active!() update!(status: 0) end
254
- klass . send ( :detect_enum_conflict! , name , "#{ value_method_name } !" )
255
- define_method ( "#{ value_method_name } !" ) { update! ( name => value ) }
254
+ # def active!() update!(status: 0) end
255
+ klass . send ( :detect_enum_conflict! , name , "#{ value_method_name } !" )
256
+ define_method ( "#{ value_method_name } !" ) { update! ( name => value ) }
257
+ end
256
258
257
259
# scope :active, -> { where(status: 0) }
258
260
# scope :not_active, -> { where.not(status: 0) }
0 commit comments