# File lib/dm-core/collection.rb, line 126 def first(*args) # TODO: this shouldn't be a kicker if scoped_query() is called if loaded? if args.empty? return super elsif args.size == 1 && args.first.kind_of?(Integer) limit = args.shift return self.class.new(scoped_query(:limit => limit)) { |c| c.replace(super(limit)) } end end query = args.last.respond_to?(:merge) ? args.pop : {} query = scoped_query(query.merge(:limit => args.first || 1)) if args.any? query.repository.read_many(query) else query.repository.read_one(query) end end