Class: ModalFields::DeclarationsDsl
- Inherits:
-
DslBase
- Object
- DslBase
- ModalFields::DeclarationsDsl
show all
- Defined in:
- lib/modalfields/modalfields.rb
Instance Method Summary
collapse
Constructor Details
Returns a new instance of DeclarationsDsl.
100
101
102
|
# File 'lib/modalfields/modalfields.rb', line 100
def initialize(model)
@model = model
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, type, *args) ⇒ Object
126
127
128
|
# File 'lib/modalfields/modalfields.rb', line 126
def method_missing(name, type, *args)
field(name, type, *args)
end
|
Instance Method Details
#field(name, type, *args) ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
# File 'lib/modalfields/modalfields.rb', line 103
def field(name, type, *args)
declaration = FieldDeclaration.declare(name, type, *args)
specific_hook = ModalFields.hooks[type.to_sym]
general_hook = ModalFields.hooks[:all_fields]
[specific_hook, general_hook].compact.each do |hook|
hook[@model, declaration] if hook
end
if ModalFields.validate(declaration)
@model.fields_info << declaration
if @model.table_exists? && @model.columns.detect{|c| c.name==declaration.name.to_s}
if declaration.specifiers.include?(:unique)
@model.validates_uniqueness_of declaration.name
end
if declaration.specifiers.include?(:required)
@model.validates_presence_of declaration.name
end
end
end
end
|
#timestamps ⇒ Object
122
123
124
125
|
# File 'lib/modalfields/modalfields.rb', line 122
def timestamps
field :created_at, :datetime
field :updated_at, :datetime
end
|