Sha256: 1c435628e0222456015fa2510fd2d45aad288f5c1c45cdfe6dc6f82c1fa81853
Contents?: true
Size: 686 Bytes
Versions: 49
Compression:
Stored size: 686 Bytes
Contents
ActiveRecord::Base.class_eval do def self.find_by_anything(identifier) matchable_columns = columns.reject { |column| [:binary, :boolean].include?(column.type) } query_clauses = matchable_columns.collect do |column| qualified_column_name = "#{table_name}.#{column.name}" column_as_string = "CAST(#{qualified_column_name} AS CHAR)" "#{column_as_string} = ?" end bindings = [identifier] * query_clauses.size find(:first, :conditions => [query_clauses.join(' OR '), *bindings]) end def self.find_by_anything!(identifier) find_by_anything(identifier) or raise ActiveRecord::RecordNotFound, "No column equals \"#{identifier}\"" end end
Version data entries
49 entries across 49 versions & 1 rubygems