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
|
# File 'lib/active_mocker/mock_creator/attributes.rb', line 14
def process_attr(attr)
enums = enums(attr.name)
attr.default = Virtus::Attribute.build(attr.type).coerce(attr.default)
attr.attribute_writer = "write_attribute(:#{attr.name}, val)"
attr.attribute_reader = "read_attribute(:#{attr.name})"
unless enums.empty?
enum_type = ActiveMocker::AttributeTypes::Enum.build(
enums: enums,
table_name: table_name,
attribute: attr.name,
db_value_type: attr.type,
)
if ActiveRecord::VERSION::MAJOR == 5
enum_type.ignore_value = true
attr.type = enum_type
if attr.default
attr.default = Virtus::Attribute.build(enum_type).get_key(attr.default)
end
elsif ActiveRecord::VERSION::MAJOR == 4
attr.attribute_writer = "@#{attr.name}_enum_type ||= Virtus::Attribute.build(#{enum_type})\nwrite_attribute(:#{attr.name}, @#{attr.name}_enum_type.coerce(val))"
attr.attribute_reader = "@#{attr.name}_enum_type ||= Virtus::Attribute.build(#{enum_type})\n@#{attr.name}_enum_type.get_key(read_attribute(:#{attr.name}))"
if attr.default
attr.default = Virtus::Attribute.build(attr.type).coerce(attr.default)
end
end
attr
end
end
|