lib/datamapper_support.rb in merb-admin-0.4.3 vs lib/datamapper_support.rb in merb-admin-0.4.4

- old
+ new

@@ -1,21 +1,24 @@ module MerbAdmin class AbstractModel module DatamapperSupport - def count(options = {}) - model.count(options) - end - def get(id) model.get(id).extend(InstanceMethods) end + def count(options = {}) + merge_order!(options) + model.count(options) + end + def first(options = {}) + merge_order!(options) model.first(options).extend(InstanceMethods) end def all(options = {}) + merge_order!(options) model.all(options) end def all_in(ids, options = {}) options[:id] = ids @@ -68,11 +71,11 @@ def associations model.relationships.to_a.map do |name, association| { :name => name, - :pretty_name => name.to_s.gsub('_', ' ').capitalize, + :pretty_name => name.to_s.gsub("_", " ").capitalize, :type => association_type_lookup(association), :parent_model => association.parent_model, :parent_key => association.parent_key.map{|r| r.name}, :child_model => association.child_model, :child_key => association.child_key.map{|r| r.name}, @@ -82,21 +85,26 @@ def properties model.properties.map do |property| { :name => property.name, - :pretty_name => property.name.to_s.gsub('_', ' ').capitalize, + :pretty_name => property.name.to_s.gsub(/_id$/, "").gsub("_", " ").capitalize, :type => type_lookup(property), :length => property.length, :nullable? => property.nullable?, :serial? => property.serial?, - :key? => property.key?, :flag_map => property.type.respond_to?(:flag_map) ? property.type.flag_map : nil, } end end private + + def merge_order!(options) + @sort ||= options.delete(:sort) || :id + @sort_order ||= options.delete(:sort_reverse) ? :desc : :asc + options.merge!(:order => [@sort.to_sym.send(@sort_order)]) + end def association_type_lookup(association) if self.model == association.parent_model association.options[:max] > 1 ? :has_many : :has_one elsif self.model == association.child_model