couchrest_model/lib/couchrest/support/rails.rb

43 lines
1.3 KiB
Ruby
Raw Normal View History

# This file contains various hacks for Rails compatibility.
2009-06-13 23:51:15 +02:00
class Hash
# Hack so that CouchRest::Document, which descends from Hash,
# doesn't appear to Rails routing as a Hash of options
def self.===(other)
return false if self == Hash && other.is_a?(CouchRest::Document)
super
end
2009-06-13 23:51:15 +02:00
end
2009-06-13 23:51:15 +02:00
CouchRest::Document.class_eval do
# Need this when passing doc to a resourceful route
alias_method :to_param, :id
2009-06-09 04:34:52 +02:00
2009-06-13 23:51:15 +02:00
# Hack so that CouchRest::Document, which descends from Hash,
# doesn't appear to Rails routing as a Hash of options
def is_a?(o)
return false if o == Hash
super
2009-06-07 11:51:50 +02:00
end
2009-06-13 23:51:15 +02:00
alias_method :kind_of?, :is_a?
end
CouchRest::CastedModel.class_eval do
# The to_param method is needed for rails to generate resourceful routes.
# In your controller, remember that it's actually the id of the document.
def id
return nil if base_doc.nil?
base_doc.id
end
alias_method :to_param, :id
end
2009-06-13 23:51:15 +02:00
require Pathname.new(File.dirname(__FILE__)).join('..', 'validation', 'validation_errors')
2009-06-13 23:51:15 +02:00
CouchRest::Validation::ValidationErrors.class_eval do
# Returns the total number of errors added. Two errors added to the same attribute will be counted as such.
# This method is called by error_messages_for
def count
errors.values.inject(0) { |error_count, errors_for_attribute| error_count + errors_for_attribute.size }
end
2009-06-13 23:51:15 +02:00
end