Class: Invitation
Class Method Summary
collapse
Instance Method Summary
collapse
#platform_class_name, #sync_key
aggregate_of, all_except, defaults, #delete, #destroy!, numbered, organic_on, resource_fields, #save, #save_and_notify!, #save_and_notify_changes!, serialize_symbolized_hash_array, #update_and_notify!, update_or_create!, whitelist_attributes
Class Method Details
.generate_code ⇒ Object
54
55
56
|
# File 'app/models/invitation.rb', line 54
def self.generate_code
SecureRandom.urlsafe_base64 4
end
|
Instance Method Details
#course_slug ⇒ Object
25
26
27
|
# File 'app/models/invitation.rb', line 25
def course_slug
course.slug
end
|
#ensure_not_expired ⇒ Object
13
14
15
|
# File 'app/models/invitation.rb', line 13
def ensure_not_expired
errors.add(:base, :invitation_expired) if expired?
end
|
#expired? ⇒ Boolean
45
46
47
|
# File 'app/models/invitation.rb', line 45
def expired?
Time.now > expiration_date
end
|
#import_from_resource_h!(json) ⇒ Object
17
18
19
|
# File 'app/models/invitation.rb', line 17
def import_from_resource_h!(json)
update! json.merge(course: Course.locate!(json[:course]))
end
|
#navigable_name ⇒ Object
29
30
31
|
# File 'app/models/invitation.rb', line 29
def navigable_name
I18n.t(:invitation_for, course: course_name)
end
|
#navigation_end? ⇒ Boolean
37
38
39
|
# File 'app/models/invitation.rb', line 37
def navigation_end?
true
end
|
#organization ⇒ Object
21
22
23
|
# File 'app/models/invitation.rb', line 21
def organization
course.organization
end
|
#to_param ⇒ Object
41
42
43
|
# File 'app/models/invitation.rb', line 41
def to_param
code
end
|
#to_resource_h ⇒ Object
33
34
35
|
# File 'app/models/invitation.rb', line 33
def to_resource_h
{code: code, course: course_slug, expiration_date: expiration_date}
end
|
#unexpired ⇒ Object
49
50
51
52
|
# File 'app/models/invitation.rb', line 49
def unexpired
raise Mumuki::Domain::GoneError, "This invitation has already expired" if expired?
self
end
|