Module: Boba::ActiveRecord::AttributeService

Defined in:
lib/boba/active_record/attribute_service.rb

Class Method Summary collapse

Class Method Details

.has_non_null_database_constraint?(constant, column_name) ⇒ Boolean

: (singleton(::ActiveRecord::Base) constant, String column_name) -> bool

Returns:

  • (Boolean)


21
22
23
24
25
26
27
28
# File 'lib/boba/active_record/attribute_service.rb', line 21

def has_non_null_database_constraint?(constant, column_name)
  column = constant.columns_hash[column_name]
  return false if column.nil?

  !column.null
rescue StandardError
  false
end

.has_unconditional_presence_validator?(constant, attribute) ⇒ Boolean

: (singleton(::ActiveRecord::Base) constant, String attribute) -> bool

Returns:

  • (Boolean)


31
32
33
34
35
36
37
# File 'lib/boba/active_record/attribute_service.rb', line 31

def has_unconditional_presence_validator?(constant, attribute)
  return false unless constant.respond_to?(:validators_on)

  constant.validators_on(attribute).any? do |validator|
    unconditional_presence_validator?(validator)
  end
end

.nilable_attribute?(constant, attribute, column_name: attribute) ⇒ Boolean

: (singleton(::ActiveRecord::Base) constant, String attribute, ?column_name: String) -> bool

Returns:

  • (Boolean)


9
10
11
12
13
# File 'lib/boba/active_record/attribute_service.rb', line 9

def nilable_attribute?(constant, attribute, column_name: attribute)
  return false if has_non_null_database_constraint?(constant, column_name)

  !has_unconditional_presence_validator?(constant, attribute)
end

.virtual_attribute?(constant, column_name) ⇒ Boolean

: (singleton(::ActiveRecord::Base) constant, String column_name) -> bool

Returns:

  • (Boolean)


16
17
18
# File 'lib/boba/active_record/attribute_service.rb', line 16

def virtual_attribute?(constant, column_name)
  constant.columns_hash[column_name].nil?
end