Sha256: 6dfc6a22fcfc4c95f932bf42334987d33f2448c95cf5ad1693721a1d47adfcff

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

module FriendlyId::NonSluggableClassMethods

  include FriendlyId::Helpers

  protected

  def find_one(id, options) #:nodoc:#
    if id.is_a?(String) && result = send("find_by_#{ friendly_id_options[:method] }", id, options)
      result.send(:found_using_friendly_id=, true)
    else
      result = super id, options
    end
    result
  end

  def find_some(ids_and_names, options) #:nodoc:#

    results = with_scope :find => options do
      find :all, :conditions => ["#{quoted_table_name}.#{primary_key} IN (?) OR #{friendly_id_options[:method].to_s} IN (?)",
        ids_and_names, ids_and_names]
    end

    expected = expected_size(ids_and_names, options)
    if results.size != expected
      raise ActiveRecord::RecordNotFound, "Couldn't find all #{ name.pluralize } with IDs (#{ ids_and_names * ', ' }) AND #{ sanitize_sql options[:conditions] } (found #{ results.size } results, but was looking for #{ expected })"
    end

    results.each {|r| r.send(:found_using_friendly_id=, true) if ids_and_names.include?(r.friendly_id)}

    results

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
friendly_id-2.2.5 lib/friendly_id/non_sluggable_class_methods.rb
friendly_id-2.2.4 lib/friendly_id/non_sluggable_class_methods.rb
friendly_id-2.2.3 lib/friendly_id/non_sluggable_class_methods.rb