Class: MemoryModel::Base::Fields::FieldSet
- Inherits:
-
Set
- Object
- Set
- MemoryModel::Base::Fields::FieldSet
show all
- Defined in:
- lib/memory_model/base/fields/field_set.rb
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &block) ⇒ Object
76
77
78
79
80
81
82
|
# File 'lib/memory_model/base/fields/field_set.rb', line 76
def method_missing(m, *args, &block)
if to_a.respond_to? m
to_a.send m, *args, &block
else
super
end
end
|
Instance Method Details
#[](name) ⇒ Object
11
12
13
|
# File 'lib/memory_model/base/fields/field_set.rb', line 11
def [](name)
find { |f| f.name == name.to_sym }
end
|
#add(name, options = {}) ⇒ Object
15
16
17
18
|
# File 'lib/memory_model/base/fields/field_set.rb', line 15
def add(name, options={})
delete_if { |f| f == name }
self << Field.new(name, options)
end
|
#comparable ⇒ Object
24
25
26
|
# File 'lib/memory_model/base/fields/field_set.rb', line 24
def comparable
select(&:comparable?).map(&:to_sym)
end
|
#fetch_default_value(model, field) ⇒ Object
39
40
41
42
43
44
|
# File 'lib/memory_model/base/fields/field_set.rb', line 39
def fetch_default_value(model, field)
default = self[field].default
send("fetch_value_using_#{default.class.name.underscore}", model, default)
rescue NoMethodError => e
raise ArgumentError, "#{default} must be a string, symbol, lambda or proc"
end
|
#include?(name) ⇒ Boolean
20
21
22
|
# File 'lib/memory_model/base/fields/field_set.rb', line 20
def include?(name)
self[name].present?
end
|
#set_default_value(model, field) ⇒ Object
35
36
37
|
# File 'lib/memory_model/base/fields/field_set.rb', line 35
def set_default_value(model, field)
model.write_attribute field, fetch_default_value(model, field)
end
|
#set_default_values(model, attributes = {}) ⇒ Object
28
29
30
31
32
33
|
# File 'lib/memory_model/base/fields/field_set.rb', line 28
def set_default_values(model, attributes={})
model.attributes = self.map(&:name).reduce(attributes.with_indifferent_access) do |hash, field|
hash[field] ||= fetch_default_value(model, field)
hash
end
end
|