Class: Tie
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Tie
- Defined in:
- app/models/tie.rb
Overview
Authorization
When an Actor establishes a Tie with other, she is granting a set of Permissions to them (posting to her wall, reading her posts, etc..) The set of Permissions granted are associated with the Relation of the Tie.
Scopes
There are several scopes defined:
- sent_by(actor)
-
ties whose sender is actor
- received_by(actor)
-
ties whose receiver is actor
- sent_or_received_by(actor)
-
the union of the former
- related_by(relation)
-
ties with this relation. Accepts relation, relation_name, integer, array
Instance Method Summary collapse
-
#bidirectional? ⇒ Boolean
This Tie is positive and positive replied.
- #positive? ⇒ Boolean
- #positive_replied? ⇒ Boolean
- #receiver_subject ⇒ Object
- #relation_name ⇒ Object
- #sender_subject ⇒ Object
-
#set_follow_action ⇒ Object
after_create callback.
-
#unset_follow_action ⇒ Object
after_remove callback.
Instance Method Details
#bidirectional? ⇒ Boolean
This Tie is positive and positive replied
99 100 101 |
# File 'app/models/tie.rb', line 99 def bidirectional? positive? && positive_replied? end |
#positive? ⇒ Boolean
89 90 91 |
# File 'app/models/tie.rb', line 89 def positive? relation.positive? end |
#positive_replied? ⇒ Boolean
94 95 96 |
# File 'app/models/tie.rb', line 94 def positive_replied? contact.positive_replied? end |
#receiver_subject ⇒ Object
84 85 86 |
# File 'app/models/tie.rb', line 84 def receiver_subject receiver.subject end |
#relation_name ⇒ Object
76 77 78 |
# File 'app/models/tie.rb', line 76 def relation_name relation.try(:name) end |
#sender_subject ⇒ Object
80 81 82 |
# File 'app/models/tie.rb', line 80 def sender_subject sender.subject end |
#set_follow_action ⇒ Object
after_create callback
Create the Actor‘s follower_count
106 107 108 109 110 111 112 113 114 115 |
# File 'app/models/tie.rb', line 106 def set_follow_action return if contact.reflexive? || !relation..include?(Permission.follow.first) action = sender.action_to!(receiver) return if action.follow? action.update_attribute(:follow, true) end |
#unset_follow_action ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'app/models/tie.rb', line 122 def unset_follow_action return if contact.reflexive? || !relation..include?(Permission.follow.first) # Because we allow several ties from the same sender to the same receiver, # we check the receiver does not still have a follower tie from this sender return if Tie.sent_by(sender). received_by(receiver). ('follow', nil). present? action = sender.action_to!(receiver) action.update_attribute(:follow, false) end |