Module: KnuVerse::Knufactor::Helpers::Resource

Included in:
Resource
Defined in:
lib/knuverse/knufactor/helpers/resource.rb

Overview

Simple helper methods for Resources

Instance Method Summary collapse

Instance Method Details

#<=>(other) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 98

def <=>(other)
  if id < other.id
    -1
  elsif id > other.id
    1
  elsif id == other.id
    0
  else
    raise Exceptions::InvalidArguments
  end
end

#datetime_from_params(params, actual_key) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 6

def datetime_from_params(params, actual_key)
  DateTime.new(
    params["#{actual_key}(1i)"].to_i,
    params["#{actual_key}(2i)"].to_i,
    params["#{actual_key}(3i)"].to_i,
    params["#{actual_key}(4i)"].to_i,
    params["#{actual_key}(5i)"].to_i
  )
end

#fresh?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 16

def fresh?
  !tainted?
end

#idObject



24
25
26
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 24

def id
  @entity[id_property.to_s]
end

#id_propertyObject



20
21
22
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 20

def id_property
  self.class.properties.select { |_, opts| opts[:id_property] }.keys.first
end

#immutable?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 28

def immutable?
  self.class.immutable?
end

#model_nameObject

ActiveRecord ActiveModel::Name compatibility method



33
34
35
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 33

def model_name
  self.class
end

#new?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 37

def new?
  !@entity.key?(id_property.to_s)
end

#path_for(kind) ⇒ Object



45
46
47
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 45

def path_for(kind)
  self.class.path_for(kind)
end

#pathsObject



41
42
43
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 41

def paths
  self.class.paths
end

#persisted?Boolean

ActiveRecord ActiveModel::Model compatibility method

Returns:

  • (Boolean)


50
51
52
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 50

def persisted?
  !new?
end

#propertiesObject



54
55
56
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 54

def properties
  self.class.properties
end

#tainted?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 58

def tainted?
  @tainted ? true : false
end

#to_keyObject

ActiveRecord ActiveModel::Conversion compatibility method



63
64
65
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 63

def to_key
  new? ? [] : [id]
end

#to_modelObject

ActiveRecord ActiveModel::Conversion compatibility method



68
69
70
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 68

def to_model
  self
end

#to_paramObject

ActiveRecord ActiveModel::Conversion compatibility method



73
74
75
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 73

def to_param
  new? ? nil : id.to_s
end

#update(params) ⇒ Object

ActiveRecord ActiveModel compatibility method



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/knuverse/knufactor/helpers/resource.rb', line 78

def update(params)
  new_params = {}
  # need to convert multi-part datetime params
  params.each do |key, value|
    if key =~ /([^(]+)\(1i/
      actual_key = key.match(/([^(]+)\(/)[1]
      new_params[actual_key] = datetime_from_params(params, actual_key)
    else
      new_params[key] = value
    end
  end

  new_params.each do |key, value|
    setter_key = "#{key}=".to_sym
    raise Exceptions::InvalidProperty unless respond_to?(setter_key)
    send(setter_key, value)
  end
  save
end