Module: KayakoClient::Object
- Included in:
- Base
- Defined in:
- lib/kayako_client/mixins/object.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- PROPERTY_TYPES =
[ :integer, :float, :string, :symbol, :boolean, :date, :object, :binary ].freeze
- COMMON_OPTIONS =
[ :in, :required, :condition, :readonly, :new ].freeze
- OPTIONS =
{ :integer => [ :range ], :object => [ :class ] }.freeze
Class Method Summary collapse
Instance Method Summary collapse
- #[](name) ⇒ Object
- #[]=(name, value) ⇒ Object
- #changed? ⇒ Boolean
- #errors ⇒ Object
- #has_errors? ⇒ Boolean
- #id ⇒ Object
- #loaded! ⇒ Object
- #new? ⇒ Boolean
- #properties ⇒ Object
- #to_i ⇒ Object
Class Method Details
.included(base) ⇒ Object
41 42 43 |
# File 'lib/kayako_client/mixins/object.rb', line 41 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#[](name) ⇒ Object
69 70 71 72 73 74 75 |
# File 'lib/kayako_client/mixins/object.rb', line 69 def [](name) if name.respond_to?(:to_sym) && self.class.properties.include?(name.to_sym) send("#{name}") else nil end end |
#[]=(name, value) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/kayako_client/mixins/object.rb', line 53 def []=(name, value) raise ArgumentError, "object properties are read-only" if self.class. raise ArgumentError, "property :#{name} does not exist" unless self.class.properties.include?(name.to_sym) if !self.class.[name.to_sym] || !self.class.[name.to_sym][:readonly] if self.class.[name.to_sym] && self.class.[name.to_sym][:new] && !new? raise ArgumentError, "property :#{name} cannot be changed" end changes(name.to_sym) @associated.delete(name.to_sym) value = assign(self.class.properties[name.to_sym], value, self.class.[name.to_sym] ? self.class.[name.to_sym] : {}) instance_variable_set("@#{name}", value) else raise ArgumentError, "property :#{name} is read-only" end end |
#changed? ⇒ Boolean
85 86 87 |
# File 'lib/kayako_client/mixins/object.rb', line 85 def changed? !changes.empty? end |
#errors ⇒ Object
77 78 79 |
# File 'lib/kayako_client/mixins/object.rb', line 77 def errors @errors ||= {} end |
#has_errors? ⇒ Boolean
97 98 99 |
# File 'lib/kayako_client/mixins/object.rb', line 97 def has_errors? errors.size > 0 end |
#id ⇒ Object
45 46 47 |
# File 'lib/kayako_client/mixins/object.rb', line 45 def id nil end |
#loaded! ⇒ Object
101 102 103 104 |
# File 'lib/kayako_client/mixins/object.rb', line 101 def loaded! @changes = [] @new = false end |
#new? ⇒ Boolean
89 90 91 92 93 94 95 |
# File 'lib/kayako_client/mixins/object.rb', line 89 def new? if defined?(@new) @new else @new = true end end |
#properties ⇒ Object
81 82 83 |
# File 'lib/kayako_client/mixins/object.rb', line 81 def properties self.class.properties.keys end |
#to_i ⇒ Object
49 50 51 |
# File 'lib/kayako_client/mixins/object.rb', line 49 def to_i instance_variable_defined?(:@id) ? instance_variable_get(:@id).to_i : 0 end |