association_validator 0.6.0 → 0.6.1
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.
- data/README.textile +8 -7
- data/README.txt +7 -6
- data/Rakefile +2 -2
- data/association_validator.gemspec +3 -3
- data/lib/association_validator.rb +16 -7
- metadata +5 -5
data/README.textile
CHANGED
@@ -7,14 +7,15 @@ validates :user_id, :presence => true, :association => true</code></pre>
|
|
7
7
|
You can also set the message using the :message option:
|
8
8
|
<pre><code>validates :user_id, :association => {:message => 'was unretrievable'}</code></pre>
|
9
9
|
|
10
|
-
For polymorphic classes, pass your class_name option as a proc
|
10
|
+
For polymorphic classes, pass your class_name option as a proc or use the new polymorphic_class option
|
11
11
|
<pre><code>class Item < ActiveRecord::Base
|
12
|
-
|
13
|
-
|
14
|
-
#
|
15
|
-
|
16
|
-
#
|
17
|
-
|
12
|
+
# The new way to do polymorphic resource validation
|
13
|
+
validates :owner_id, :presence => true, :association => {:polymorphic_class => 'owner_type'}
|
14
|
+
# it calls record.send(:polymorphic_class)
|
15
|
+
|
16
|
+
# If for some odd reasson you need to use a proc:
|
17
|
+
validates :user_id, :presence => true, :association => {:class_name => Proc.new {|r| r.user_type || "User" }}
|
18
|
+
end</code></pre>
|
18
19
|
|
19
20
|
h1. How to install
|
20
21
|
|
data/README.txt
CHANGED
@@ -6,14 +6,15 @@ Validate that the id field is a saved record. It will ignore blank fields, so us
|
|
6
6
|
You can also set the message using the :message option:
|
7
7
|
validates :user_id, :association => {:message => 'was unretrievable'}
|
8
8
|
|
9
|
-
For polymorphic classes, pass your class_name option as a proc
|
9
|
+
For polymorphic classes, pass your class_name option as a proc or use the new polymorphic_class option
|
10
10
|
class Item < ActiveRecord::Base
|
11
|
-
|
11
|
+
# The new way to do polymorphic resource validation
|
12
|
+
validates :owner_id, :presence => true, :association => {:polymorphic_class => 'owner_type'}
|
13
|
+
# it calls record.send(:polymorphic_class)
|
14
|
+
|
15
|
+
# If for some odd reasson you need to use a proc:
|
16
|
+
validates :user_id, :presence => true, :association => {:class_name => Proc.new {|r| r.user_type || "User" }}
|
12
17
|
end
|
13
|
-
# == Schema Information
|
14
|
-
# Table name: items
|
15
|
-
# owner_id :integer
|
16
|
-
# owner_type :string
|
17
18
|
|
18
19
|
=== How to install
|
19
20
|
Add the following line to your Gemfile and install.
|
data/Rakefile
CHANGED
@@ -2,9 +2,9 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('association_validator', '0.6.
|
5
|
+
Echoe.new('association_validator', '0.6.1') do |p|
|
6
6
|
p.description = "Rails 3 assocation validation for id fields"
|
7
|
-
p.url = "http://
|
7
|
+
p.url = "http://rubygems.org/gems/association_validator"
|
8
8
|
p.author = "Mohammad El-Abid"
|
9
9
|
p.email = "mohammad {dot} elabid {at} gmail"
|
10
10
|
p.ignore_pattern = []
|
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{association_validator}
|
5
|
-
s.version = "0.6.
|
5
|
+
s.version = "0.6.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Mohammad El-Abid"]
|
9
|
-
s.date = %q{2011-03-
|
9
|
+
s.date = %q{2011-03-24}
|
10
10
|
s.description = %q{Rails 3 assocation validation for id fields}
|
11
11
|
s.email = %q{mohammad {dot} elabid {at} gmail}
|
12
12
|
s.extra_rdoc_files = ["README.textile", "README.txt", "lib/association_validator.rb"]
|
13
13
|
s.files = ["Manifest", "README.textile", "README.txt", "Rakefile", "association_validator.gemspec", "lib/association_validator.rb"]
|
14
|
-
s.homepage = %q{http://
|
14
|
+
s.homepage = %q{http://rubygems.org/gems/association_validator}
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Association_validator", "--main", "README.textile"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = %q{association_validator}
|
@@ -1,16 +1,25 @@
|
|
1
1
|
class AssociationValidator < ActiveModel::EachValidator
|
2
|
-
def validate_each(record, attribute,
|
3
|
-
return if record.send(attribute).blank? # return if
|
2
|
+
def validate_each(record, attribute, record_id)
|
3
|
+
return if record.send(attribute).blank? # return if there is nothing to validate
|
4
|
+
# use :presence => true if you want to confirm that something is there
|
4
5
|
|
5
|
-
|
6
|
+
if not options[:polymorphic_class].blank?
|
7
|
+
attribute_string = record.send(options[:polymorphic_class])
|
8
|
+
return if attribute_string.blank?
|
9
|
+
|
10
|
+
elsif options[:class_name].blank? # if class_name is not specified, assume that it's the attirbute without the last 3 characters which should be _id
|
6
11
|
attribute_string = attribute.to_s
|
7
12
|
attribute_string[-3,3] = ''
|
13
|
+
|
8
14
|
elsif options[:class_name].is_a?(String)
|
9
15
|
attribute_string = options[:class_name]
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
16
|
+
|
17
|
+
elsif options[:class_name].is_a?(Proc)
|
18
|
+
attribute_string = options[:class_name].yield(record)
|
19
|
+
return if attribute_string.blank?
|
20
|
+
|
21
|
+
else
|
22
|
+
raise "Association Validator does not support a(n) #{options[:class_name].class.to_s.humanize} as a class_name option"
|
14
23
|
end
|
15
24
|
|
16
25
|
c = attribute_string.camelize.constantize # create a refrence to the class
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: association_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-03-
|
12
|
+
date: 2011-03-24 00:00:00.000000000 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activemodel
|
17
|
-
requirement: &
|
17
|
+
requirement: &25441140 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
version: 3.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *25441140
|
26
26
|
description: Rails 3 assocation validation for id fields
|
27
27
|
email: mohammad {dot} elabid {at} gmail
|
28
28
|
executables: []
|
@@ -39,7 +39,7 @@ files:
|
|
39
39
|
- association_validator.gemspec
|
40
40
|
- lib/association_validator.rb
|
41
41
|
has_rdoc: true
|
42
|
-
homepage: http://
|
42
|
+
homepage: http://rubygems.org/gems/association_validator
|
43
43
|
licenses: []
|
44
44
|
post_install_message:
|
45
45
|
rdoc_options:
|