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