app/models/content_folder.rb in daengine-0.6.21 vs app/models/content_folder.rb in daengine-0.6.22
- old
+ new
@@ -4,27 +4,18 @@
include Mongoid::Document
#include Mongoid::Timestamps
field :folder_id, type: String
field :label, type: String
- field :document_ids, type: Array, default: []
-
+ has_and_belongs_to_many :documents, :class_name => "DigitalAsset", inverse_of: nil
#recursively_embeds_many
embeds_many :child_folders, :class_name => "ContentFolder", :cyclic => true
accepts_nested_attributes_for :child_folders
- key :folder_id
-
validates_presence_of :folder_id, :label
- validate :validate_has_content
+ #validates_uniqueness_of :folder_id
- def validate_has_content
- if child_folders.empty? && (document_ids.nil? || document_ids.empty?)
- errors[:base] << 'Either child_folders or document_ids are required'
- end
- end
-
def self.lit_center_folder
find_folder(FolderIds::LIT_CENTER)
end
def self.merrill_lynch_folder
@@ -38,9 +29,29 @@
def self.find_folder(id)
root = ContentFolder.last
child_folders = root.nil? ? [] : Array(root.child_folders)
child_folders.find { |folder| id == folder.folder_id } unless child_folders.nil?
end
+
+ def self.find_folder_by_relative_path(path)
+ folders = path.split('/')
+ root = ContentFolder.last
+ root.nil? ? nil : find_child_folder(root, folders)
+ end
+
+ def self.find_child_folder(parent_folder, folders)
+ child_folders = Array(parent_folder.child_folders)
+ f = child_folders.find { |folder| folders[0] == folder.folder_id }
+ unless f.nil?
+ folders.shift
+ if folders.count > 0
+ return find_child_folder(f, folders)
+ else
+ return f
+ end
+ end
+ end
+
end
class ContentFolder::FolderIds
LIT_CENTER = 'lit_center'
MERRILL_LYNCH = 'merrill_lynch'
\ No newline at end of file