Class: Netfira::WebConnect::Model::Relation
- Inherits:
-
Netfira::WebConnect::Model
show all
- Includes:
- Events
- Defined in:
- lib/netfira/web_connect/model.rb,
lib/netfira/web_connect/model/relation.rb,
lib/netfira/web_connect/model/relation/events.rb
Defined Under Namespace
Modules: Events
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#dispatch_event, plural_name, single_name
Class Attribute Details
Returns the value of attribute related_classes.
9
10
11
|
# File 'lib/netfira/web_connect/model/relation.rb', line 9
def related_classes
@related_classes
end
|
Class Method Details
.for(class_a, class_b) ⇒ Object
63
64
65
66
|
# File 'lib/netfira/web_connect/model/relation.rb', line 63
def for(class_a, class_b)
name = [class_a, class_b].map{ |c| (c.is_a?(Class) ? c : c.class).name.demodulize }.sort.join 'To'
Models.const_get name if Models.const_defined? name
end
|
.materialize(name_a, name_b) ⇒ Object
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/netfira/web_connect/model/relation.rb', line 11
def materialize(name_a, name_b)
klass = Class.new(self)
Models.const_set "#{name_a}To#{name_b}", klass
klass.related_classes = [name_a, name_b].map{ |n| Models.const_get n.camelize.singularize }
if Netfira::WebConnect.paranoia?
klass.acts_as_paranoid
else
def klass.with_deleted; self end
end
end
|
.table_name ⇒ Object
55
56
57
58
59
60
61
|
# File 'lib/netfira/web_connect/model/relation.rb', line 55
def table_name
@table_name ||= if self == Model::Relation
Models::Table.table_name
else
Netfira::WebConnect.db_table_prefix(related_classes.map(&:plural_name).join '_to_').to_s
end
end
|
Instance Method Details
#records ⇒ Object
70
71
72
73
|
# File 'lib/netfira/web_connect/model/relation.rb', line 70
def records
self.class.current_scope = nil if Netfira::WebConnect.paranoia?
self.class.related_classes.map{ |klass| __send__ klass.single_name.to_sym }
end
|