Class: LWS::Generic::Model
- Inherits:
-
Spyke::Base
- Object
- Spyke::Base
- LWS::Generic::Model
- Includes:
- ActiveModel::Dirty
- Defined in:
- lib/lws/apps/generic.rb
Overview
The generic model class
This model forms the base for all LWS models.
Direct Known Subclasses
Auth::Account, Auth::App, Auth::Company, Auth::Contract, Auth::Device, Auth::License, Auth::Token, Auth::UsageReport, Auth::User, CorporateWebsite::Article, CorporateWebsite::OfficeTime, CorporateWebsite::Page, CorporateWebsite::SocialPage, CorporateWebsite::SocialPost, DigitalSignage::Channel, DigitalSignage::Channel::Group, DigitalSignage::Channel::Group::Tag, DigitalSignage::Channel::Tag, DigitalSignage::Channel::TimeSchedule, DigitalSignage::Channel::TimeSchedule::Day, DigitalSignage::Channel::TimeScheduleOverride, DigitalSignage::Display, DigitalSignage::Display::Input, DigitalSignage::Display::Resolution, DigitalSignage::Layout, DigitalSignage::Layout::Category, DigitalSignage::Layout::Element, DigitalSignage::Layout::Element::Customizable, DigitalSignage::Layout::Element::Property, DigitalSignage::Layout::Version, DigitalSignage::Player, DigitalSignage::Player::Component, DigitalSignage::Player::Component::Part, DigitalSignage::Player::Configuration, DigitalSignage::Player::Configuration::Setting, DigitalSignage::Player::Log, DigitalSignage::Player::Model, DigitalSignage::Player::Model::Capability, DigitalSignage::Player::Notification, DigitalSignage::Player::Os::Branch, DigitalSignage::Player::Os::Branch::Release, DigitalSignage::Player::Os::Package, DigitalSignage::Player::Os::Package::Version, DigitalSignage::Player::Os::Package::VersionChange, DigitalSignage::Player::Os::ReleaseChannel, DigitalSignage::Player::PredefinedConfiguration, DigitalSignage::Player::PredefinedConfiguration::Setting, DigitalSignage::Player::Request, DigitalSignage::Player::Screenshot, DigitalSignage::Player::Tag, DigitalSignage::Slide, DigitalSignage::Slide::Schedule, Configuration, Maps::Map, Maps::Marker, Maps::Source, Presence::Appointment, Presence::Journal, Presence::Location, Presence::Location::Map, Presence::Location::Map::Position, Presence::Notification, Presence::Person, Presence::Reader, Resource::Collection, Resource::Collection::Item, Resource::Folder, Ticket::Attachment, Ticket::Group, Ticket::Message, Ticket::Tag, Ticket::Ticket
Instance Attribute Summary collapse
-
#created_at ⇒ String
readonly
The timestamp of when the model was created.
-
#id ⇒ Integer
readonly
The (unique) ID of the model.
-
#updated_at ⇒ String
readonly
The timestamp of when the model was last updated.
-
#url ⇒ String
readonly
The URL of the model on the REST API.
-
#url_html ⇒ String
readonly
The URL of the web/HTML page of the model.
Instance Method Summary collapse
-
#deep_dup ⇒ Model
Returns a deep copy of the model.
-
#dig(*attrs) ⇒ Object?
Extracts a nested attribute value specified by the sequence of attribute names by calling dig at each step, returning
nilif any intermediate step isnil. -
#reload ⇒ Hash
Reloads the attributes of this model by retrieving it from LWS via HTTP.
-
#rollback ⇒ Array<String>
Restore the attributes of this model to the previous (original) values.
-
#save ⇒ Hash, Trueclass
Saves the model to LWS via HTTP if there are any changes.
Instance Attribute Details
#created_at ⇒ String (readonly)
Returns the timestamp of when the model was created.
146 |
# File 'lib/lws/apps/generic.rb', line 146 attribute :created_at |
#id ⇒ Integer (readonly)
Returns the (unique) ID of the model.
142 |
# File 'lib/lws/apps/generic.rb', line 142 attribute :id |
#updated_at ⇒ String (readonly)
Returns the timestamp of when the model was last updated.
150 |
# File 'lib/lws/apps/generic.rb', line 150 attribute :updated_at |
#url ⇒ String (readonly)
Returns the URL of the model on the REST API.
154 |
# File 'lib/lws/apps/generic.rb', line 154 attribute :url |
#url_html ⇒ String (readonly)
Returns the URL of the web/HTML page of the model.
158 |
# File 'lib/lws/apps/generic.rb', line 158 attribute :url_html |
Instance Method Details
#deep_dup ⇒ Model
Returns a deep copy of the model.
221 222 223 224 225 226 227 228 229 230 231 |
# File 'lib/lws/apps/generic.rb', line 221 def deep_dup dup_obj = super dup_obj.instance_eval do @changed_attributes = @changed_attributes.deep_dup @previously_changed = @previously_changed.deep_dup @scope = @scope.deep_dup @spyke_attributes = @spyke_attributes.deep_dup @uri_template = @uri_template.deep_dup end dup_obj end |
#dig(*attrs) ⇒ Object?
Extracts a nested attribute value specified by the sequence of attribute names by calling dig at each step, returning nil if any intermediate step is nil.
206 207 208 209 210 211 212 213 214 215 216 217 |
# File 'lib/lws/apps/generic.rb', line 206 def dig(*attrs) attr = attrs.shift value = begin send(attr) rescue NoMethodError nil end return nil if value.nil? return value if attrs.empty? raise TypeError, "#{value.class} does not have #dig method" unless value.respond_to? :dig value.dig(*attrs) end |
#reload ⇒ Hash
Reloads the attributes of this model by retrieving it from LWS via HTTP.
This also clears information about tracked changes to attribute values!
179 180 181 182 183 |
# File 'lib/lws/apps/generic.rb', line 179 def reload result = super clear_changes_information if result result end |
#rollback ⇒ Array<String>
Restore the attributes of this model to the previous (original) values.
188 189 190 |
# File 'lib/lws/apps/generic.rb', line 188 def rollback restore_attributes end |
#save ⇒ Hash, Trueclass
Saves the model to LWS via HTTP if there are any changes.
196 197 198 199 200 201 |
# File 'lib/lws/apps/generic.rb', line 196 def save return true unless changed? || !persisted? result = super changes_applied if result result end |