Module: Ladder::Resource
- Extended by:
- ActiveSupport::Concern
- Includes:
- ActiveTriples::Identifiable, Serializable, Mongoid::Document
- Defined in:
- lib/ladder/resource.rb
Defined Under Namespace
Modules: ClassMethods, Dynamic, Serializable
Instance Method Summary collapse
-
#<<(data) ⇒ Object
Push RDF statement into resource.
-
#update_resource(opts = {}) ⇒ Object
Populate resource properties from ActiveModel.
Methods included from Serializable
#as_framed_jsonld, #as_jsonld, #as_qname
Instance Method Details
#<<(data) ⇒ Object
Push RDF statement into resource
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ladder/resource.rb', line 35 def <<(data) # ActiveTriples::Resource expects: RDF::Statement, Hash, or Array data = RDF::Statement.from(data) unless data.is_a? RDF::Statement # Only push statement if the statement's predicate is defined on the class if resource_class.properties.values.map(&:predicate).include? data.predicate field_name = resource_class.properties.select { |name, term| term.predicate == data.predicate }.keys.first.to_sym # Set the value in Mongoid value = data.object.is_a?(RDF::Literal) ? data.object.object : data.object.to_s self.send("#{field_name}=", value) end end |
#update_resource(opts = {}) ⇒ Object
Populate resource properties from ActiveModel
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ladder/resource.rb', line 22 def update_resource(opts = {}) resource_class.properties.each do |name, property| value = update_from_field(name) if fields[name] value = update_from_relation(name, opts) if relations[name] resource.set_value(property.predicate, value) #if value end resource end |