require File.join(File.dirname(__FILE__), 'configurations') module Noah class Application < Model include Taggable include Linkable attribute :name set :configurations, Configuration index :name index :configurations def validate super assert_present :name assert_unique :name end def to_hash cfg_hash = Hash.new configurations.sort.each do |cfg| cfg_hash["#{cfg.name}"] = {:format => cfg.to_hash[:format], :body => cfg.to_hash[:body]} end res_hash = {:name => name, :created_at => created_at, :updated_at => updated_at, :configurations => cfg_hash} super.merge(res_hash) end class << self def find_or_create(opts = {}) begin find(opts).first.nil? ? (obj = new(opts)) : (obj = find(opts).first) if obj.valid? obj.save end obj rescue Exception => e e.message end end end end class Applications def self.all(options = {}) app_hash = Hash.new options.empty? ? apps=Application.all.sort : apps=Application.find(options).sort apps.each {|x| app_hash["#{x.name}"] = x.to_hash.reject {|k,v| k == :name} } app_hash end end end