Class: TicketSharing::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/ticket_sharing/base.rb

Direct Known Subclasses

Actor, Agreement, Attachment, Comment, Ticket

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Base

Returns a new instance of Base.



27
28
29
30
31
# File 'lib/ticket_sharing/base.rb', line 27

def initialize(attrs = {})
  field_list.each do |attribute|
    self.send("#{attribute}=", attrs[attribute.to_s]) if attrs.has_key?(attribute.to_s)
  end
end

Class Method Details

.field_listObject



11
12
13
# File 'lib/ticket_sharing/base.rb', line 11

def self.field_list
  @fields || []
end

.fields(*args) ⇒ Object



6
7
8
9
# File 'lib/ticket_sharing/base.rb', line 6

def self.fields(*args)
  @fields = args
  attr_accessor *args
end

.first_ancestorObject



15
16
17
# File 'lib/ticket_sharing/base.rb', line 15

def self.first_ancestor
  ancestors.detect { |a| a != self }
end

Instance Method Details

#as_json(_options = {}) ⇒ Object



33
34
35
36
37
38
# File 'lib/ticket_sharing/base.rb', line 33

def as_json(_options = {})
  field_list.inject({}) do |attrs, field|
    attrs[field.to_s] = send(field)
    attrs
  end
end

#field_listObject



19
20
21
22
23
24
25
# File 'lib/ticket_sharing/base.rb', line 19

def field_list
  if self.class.field_list.any?
    self.class.field_list
  else
    self.class.first_ancestor.field_list
  end
end

#to_json(_options = {}) ⇒ Object



40
41
42
# File 'lib/ticket_sharing/base.rb', line 40

def to_json(_options = {})
  JsonSupport.encode(as_json)
end