35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'railties/lib/rails/generators/generated_attribute.rb', line 35
def parse(column_definition)
name, type, index_type = column_definition.split(":")
index_type, type = type, nil if valid_index_type?(type)
type, attr_options = *parse_type_and_options(type)
type = type.to_sym if type
if dangerous_name?(name)
raise Error, "Could not generate field '#{name}', as it is already defined by Active Record."
end
if type && !valid_type?(type)
raise Error, "Could not generate field '#{name}' with unknown type '#{type}'."
end
if index_type && !valid_index_type?(index_type)
raise Error, "Could not generate field '#{name}' with unknown index '#{index_type}'."
end
if type && reference?(type)
if UNIQ_INDEX_OPTIONS.include?(index_type)
attr_options[:index] = { unique: true }
end
end
new(name, type, index_type, attr_options)
end
|