Sha256: 7128ea8fb09667323d0764b62c5f725f3b1c5f05d64da451324b1dab9df5ea71

Contents?: true

Size: 1.42 KB

Versions: 3

Compression:

Stored size: 1.42 KB

Contents

# This file contains various hacks for Rails compatibility.
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
end

CouchRest::Document.class_eval do
  # Need this when passing doc to a resourceful route
  alias_method :to_param, :id

  # 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
  end
  alias_method :kind_of?, :is_a?

  # Gives extended doc a seamless logger
  def logger
    ActiveRecord::Base.logger
  end
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

require Pathname.new(File.dirname(__FILE__)).join('..', 'validation', 'validation_errors')

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
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sporkd-couchrest-0.30 lib/couchrest/support/rails.rb
sporkd-couchrest-0.31 lib/couchrest/support/rails.rb
sporkd-couchrest-0.33 lib/couchrest/support/rails.rb