lib/brief/model.rb in brief-1.3.2 vs lib/brief/model.rb in brief-1.4.1
- old
+ new
@@ -10,10 +10,11 @@
include Virtus.model(finalize: false)
include Initializers
include AccessorMethods
include Persistence
+ include Serializers
class_attribute :models, :after_initialization_hooks
self.models = Array(models).to_set
@@ -43,11 +44,11 @@
def method_missing(meth, *args, &block)
if args.empty?
if document.respond_to?(meth)
document.send(meth)
else
- document.data.key?(meth) ? data[meth] : extracted.send(meth)
+ document.data && document.data.key?(meth) ? data[meth] : extracted.send(meth)
end
else
super
end
end
@@ -61,14 +62,23 @@
classes.inject({}.to_mash) do |memo, klass|
memo.tap { memo[klass.type_alias] = klass }
end
end
+ def self.lookup(type_alias)
+ for_type(type_alias) || for_folder_name(type_alias) || for_type(type_alias.singularize)
+ end
+
def self.for_type(type_alias)
table[type_alias]
end
+ def self.for_folder_name(folder_name=nil)
+ folder_name = folder_name.to_s.downcase
+ table[folder_name.singularize] || table[folder_name]
+ end
+
def self.lookup_class_from_args(args = [])
args = Array(args)
if model_class = for_type(args.first)
model_class
@@ -87,9 +97,19 @@
def extract_content(options = {})
document.extract_content(options)
end
module ClassMethods
+ def to_schema
+ {
+ content: definition.content_schema,
+ metadata: definition.metadata_schema,
+ class_name: to_s,
+ type_alias: type_alias,
+ name: name
+ }
+ end
+
def has_actions?
definition.has_actions?
end
def defined_actions