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
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'app/models/active_sync/active_record_extension.rb', line 16
def sync_change
if ActiveSync::Sync.is_sync_model? self.class
ActionCable.server.broadcast("#{self.class}_All", ActiveSync::Sync.sync_record( self ) )
self.class.sync_record_subscriptions.each do | stream, filter |
unless filter[:IsReference]
match = true
filter.each do | key, value |
unless self.send( key ) == value
match = false
break
end
end
ActionCable.server.broadcast( stream, ActiveSync::Sync.sync_record( self ) ) if match
else
model_association = ActiveSync::Sync.get_model_association( filter[:subscribed_model], filter[:association_name] )
record = filter[:subscribed_model].find( filter[:record_id] )
if defined? record.send( model_association[:name] ).pluck
referenced = record.send( model_association[:name] ).pluck(:id).include? id
else
referenced = record.send( model_association[:name] ).id == id
end
if referenced
ActionCable.server.broadcast( stream, ActiveSync::Sync.association_record( model_association, record ))
end
end
end
end
end
|