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