rails_extensions 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,38 @@
1
+ module ActiveRecord::Validations::ClassMethods
2
+
3
+ alias_method :validates_uniqueness_case_insensitive, :validates_uniqueness_of
4
+
5
+ def validates_uniqueness_of(*attr_names)
6
+ configuration = { :message => ActiveRecord::Errors.default_error_messages[:taken], :case_sensitive => false }
7
+ configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
8
+ validates_each(attr_names,configuration) do |record, attr_name, value|
9
+ if value.nil? || !columns_hash[attr_name.to_s].text? || configuration[:case_sensitive] == true
10
+ condition_sql = "#{attr_name} #{attribute_condition(value)}"
11
+ condition_params = [value]
12
+ else
13
+ condition_sql = "LOWER(#{attr_name}) #{attribute_condition(value)}"
14
+ condition_params = [value.downcase]
15
+ end
16
+ if scope = configuration[:scope]
17
+ Array(scope).map do |scope_item|
18
+ scope_value = record.send(scope_item)
19
+ condition_sql << " AND #{record.class.table_name}.#{scope_item} #{attribute_condition(scope_value)}"
20
+ condition_params << scope_value
21
+ end
22
+ end
23
+ unless record.new_record?
24
+ condition_sql << " AND #{record.class.table_name}.#{record.class.primary_key} <> ?"
25
+ condition_params << record.send(:id)
26
+ end
27
+ if record.class.respond_to? :find_with_deleted # if true it uses acts_as_paranoid deleted_at is null or status_id is deleted in search
28
+ rec = record.class.count_with_deleted(:conditions => [condition_sql, *condition_params])
29
+ else
30
+ rec = record.class.count(:conditions => [condition_sql, *condition_params])
31
+ end
32
+ if rec != 0 # when a record is found,
33
+ record.errors.add(attr_name, configuration[:message])
34
+ end
35
+ end # validates_each
36
+ end # validates_uniqueness_of
37
+
38
+ end # module ActiveRecord::Validations::ClassMethods
@@ -2,4 +2,4 @@
2
2
  gem_name: rails_extensions
3
3
  package: rails_extensions
4
4
  project: magrathea
5
- version: 1.0.1
5
+ version: 1.0.2
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: rails_extensions
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.1
7
- date: 2007-10-19 00:00:00 -04:00
6
+ version: 1.0.2
7
+ date: 2007-10-23 00:00:00 -04:00
8
8
  summary: rails_extensions
9
9
  require_paths:
10
10
  - lib
@@ -20,13 +20,17 @@ autorequire:
20
20
  - m_migration_model
21
21
  - m_form_tag_helper
22
22
  - m_cookies
23
+ - m_active_record_validations
23
24
  - m_active_record_base
24
25
  - m_active_record_associatioins
25
26
  - m_abstract_request
26
27
  - rails_extensions
27
28
  - m_migration_model
28
29
  - m_form_tag_helper
30
+ - m_cookies
29
31
  - m_active_record_base
32
+ - m_active_record_associatioins
33
+ - m_abstract_request
30
34
  default_executable:
31
35
  bindir: bin
32
36
  has_rdoc: false
@@ -47,6 +51,7 @@ files:
47
51
  - lib/m_abstract_request.rb
48
52
  - lib/m_active_record_associatioins.rb
49
53
  - lib/m_active_record_base.rb
54
+ - lib/m_active_record_validations.rb
50
55
  - lib/m_cookies.rb
51
56
  - lib/m_form_tag_helper.rb
52
57
  - lib/m_migration_model.rb