Class: Cyby::Kintone::Record

Inherits:
Object
  • Object
show all
Defined in:
lib/cyby/kintone/record.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, raw = {}) ⇒ Record

Returns a new instance of Record.



4
5
6
7
8
# File 'lib/cyby/kintone/record.rb', line 4

def initialize(app, raw = {})
  @app = app
  @raw = raw
  @changed = {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/cyby/kintone/record.rb', line 43

def method_missing(method_name, *args)
  key = if @app.convert_to_camelized_field
          method_name.to_s.camelize(:lower)
        else
          method_name.to_s
        end
  if key[-1] == "="
    self.[]=(key[0..-2], args[0])
  else
    self.[](key)
  end
end

Instance Method Details

#[](key) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/cyby/kintone/record.rb', line 10

def [](key)
  if @raw.key?(key)
    convert(@raw[key])
  else
    fail "'#{key}' doesn't exist"
  end
end

#[]=(key, value) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/cyby/kintone/record.rb', line 18

def []=(key, value)
  @raw[key] ||= {}
  if @raw[key]["value"] != value
    changed(key)
  end
  @raw[key]["value"] = value
end

#changed(field) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/cyby/kintone/record.rb', line 26

def changed(field)
  case field
  when "$id", "$revision"
    # Do nothing
  else
    @changed[field] = true
  end
end

#changed?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/cyby/kintone/record.rb', line 35

def changed?
  @changed.any?
end

#deleteObject



68
69
70
# File 'lib/cyby/kintone/record.rb', line 68

def delete
  @app.delete(self)
end

#inspectObject



56
57
58
59
60
61
62
# File 'lib/cyby/kintone/record.rb', line 56

def inspect
  hash = {}
  @raw.each do |key, value|
    hash[key] = value["value"]
  end
  hash.inspect
end

#saveObject



64
65
66
# File 'lib/cyby/kintone/record.rb', line 64

def save
  @app.save(self)
end

#to_json_for_saveObject



72
73
74
75
76
77
78
79
80
81
# File 'lib/cyby/kintone/record.rb', line 72

def to_json_for_save
  record = @raw.select do |key, value|
    @changed[key]
  end
  if @raw["$id"]
    { id: @raw["$id"]["value"], record: record }
  else
    { record: record }
  end
end

#unchangedObject



39
40
41
# File 'lib/cyby/kintone/record.rb', line 39

def unchanged
  @changed = {}
end