validates_lengths_from_database 0.5.1 → 0.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.rdoc +4 -0
- data/README.rdoc +21 -1
- data/lib/validates_lengths_from_database.rb +10 -1
- data/lib/validates_lengths_from_database/version.rb +1 -1
- data/spec/validates_lengths_from_database_spec.rb +36 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7d17fe52e66ac67d1cfc3a81dd72fee22a6050b7
         | 
| 4 | 
            +
              data.tar.gz: 636155e6624043e9981dd9961eb990aa7059febf
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d500d14353f1297f9dc3c35a5333e4cedd81fcc1172867264d77299550c5fd3de9e58ae56231c47b09da517ef6e0f3fe2382a75bfdb95d5f1f6981ff706d5219
         | 
| 7 | 
            +
              data.tar.gz: 445d4c872b1add3772218b3811e112823981935d4cd2f477fccae00fb9cfa56c11dbe49ff5fd10b76b0e0acc09e6ec0ebc9c6683300e3761dd27fa03f9c3650f
         | 
    
        data/CHANGELOG.rdoc
    CHANGED
    
    
    
        data/README.rdoc
    CHANGED
    
    | @@ -50,7 +50,27 @@ Or to set the limit differently for string (VARCHAR) and (TEXT) columns: | |
| 50 50 | 
             
                validates_lengths_from_database :limit => {:string => 255, :text => 4092}
         | 
| 51 51 | 
             
              end
         | 
| 52 52 |  | 
| 53 | 
            -
             | 
| 53 | 
            +
            Since v0.5.2, it's possible to use the `validate_lengths_from_database`
         | 
| 54 | 
            +
            on an abstract parent (without a table), such as +ApplicationRecord+ or <tt>ActiveRecord::Base</tt>.
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              class ApplicationRecord < ActiveRecord::Base
         | 
| 57 | 
            +
                self.abstract_class = true
         | 
| 58 | 
            +
                validates_lengths_from_database :limit => 255
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              # This will use the validations with default options (from parent)
         | 
| 62 | 
            +
              class Post < ApplicationRecord
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              # This will use the validations, with overriding the default options (the limit will not be applied)
         | 
| 66 | 
            +
              class User < ApplicationRecord
         | 
| 67 | 
            +
                validates_lengths_from_database :only => [:name]
         | 
| 68 | 
            +
              end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
              # This will use the validations, using the default options + adding some class specific customizations
         | 
| 71 | 
            +
              class Comment < ApplicationRecord
         | 
| 72 | 
            +
                validate_lengths_from_database_options[:only] << :name
         | 
| 73 | 
            +
              end
         | 
| 54 74 |  | 
| 55 75 | 
             
            == Running Tests
         | 
| 56 76 |  | 
| @@ -26,7 +26,16 @@ module ValidatesLengthsFromDatabase | |
| 26 26 | 
             
                end
         | 
| 27 27 |  | 
| 28 28 | 
             
                def validate_lengths_from_database_options
         | 
| 29 | 
            -
                  @validate_lengths_from_database_options
         | 
| 29 | 
            +
                  if defined? @validate_lengths_from_database_options
         | 
| 30 | 
            +
                    @validate_lengths_from_database_options
         | 
| 31 | 
            +
                  else
         | 
| 32 | 
            +
                    # in case we inherited the validations, copy the options so that we can update it in child
         | 
| 33 | 
            +
                    # without affecting the parent
         | 
| 34 | 
            +
                    @validate_lengths_from_database_options = superclass.validate_lengths_from_database_options.inject({}) do |hash, (key, value)|
         | 
| 35 | 
            +
                      value = value.dup if value.respond_to?(:dup)
         | 
| 36 | 
            +
                      hash.update(key => value)
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 30 39 | 
             
                end
         | 
| 31 40 | 
             
              end
         | 
| 32 41 |  | 
| @@ -26,6 +26,11 @@ describe ValidatesLengthsFromDatabase do | |
| 26 26 | 
             
                ActiveSupport::Deprecation.silenced = true
         | 
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 | 
            +
              class ApplicationRecord < ActiveRecord::Base
         | 
| 30 | 
            +
                self.abstract_class = true
         | 
| 31 | 
            +
                validates_lengths_from_database :limit => 255
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 29 34 | 
             
              context "Model without associated table" do
         | 
| 30 35 | 
             
                specify "defining validates_lengths_from_database should not raise an error" do
         | 
| 31 36 | 
             
                  lambda {
         | 
| @@ -109,7 +114,7 @@ describe ValidatesLengthsFromDatabase do | |
| 109 114 |  | 
| 110 115 | 
             
                  class ArticleValidateText < ActiveRecord::Base
         | 
| 111 116 | 
             
                    self.table_name = "articles"
         | 
| 112 | 
            -
                    validates_lengths_from_database :only => [: | 
| 117 | 
            +
                    validates_lengths_from_database :only => [:string_1]
         | 
| 113 118 | 
             
                  end
         | 
| 114 119 | 
             
                end
         | 
| 115 120 |  | 
| @@ -130,6 +135,36 @@ describe ValidatesLengthsFromDatabase do | |
| 130 135 | 
             
                  end
         | 
| 131 136 | 
             
                end
         | 
| 132 137 |  | 
| 138 | 
            +
                context "inheritance" do
         | 
| 139 | 
            +
                  before do
         | 
| 140 | 
            +
                    class ArticleValidateChild < ApplicationRecord
         | 
| 141 | 
            +
                      self.table_name = "articles"
         | 
| 142 | 
            +
                      validates_lengths_from_database :only => [:string_1]
         | 
| 143 | 
            +
                    end
         | 
| 144 | 
            +
                    class ArticleValidateChildOverwrite < ArticleValidateChild
         | 
| 145 | 
            +
                      validate_lengths_from_database_options[:only] << :string_2
         | 
| 146 | 
            +
                    end
         | 
| 147 | 
            +
                    class ArticleWithoutValidations < ApplicationRecord
         | 
| 148 | 
            +
                      self.table_name = "articles"
         | 
| 149 | 
            +
                      validates_lengths_from_database :only => []
         | 
| 150 | 
            +
                    end
         | 
| 151 | 
            +
                  end
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                  it "should inherit the validation options from the parent" do
         | 
| 154 | 
            +
                    @article = ArticleValidateChild.new(LONG_ATTRIBUTES)
         | 
| 155 | 
            +
                    @article.valid?
         | 
| 156 | 
            +
                    @article.errors["string_1"].join.should =~ /too long/
         | 
| 157 | 
            +
                    @article.errors["string_2"].join.should_not =~ /too long/
         | 
| 158 | 
            +
                  end
         | 
| 159 | 
            +
             | 
| 160 | 
            +
                  it "should allow changing the validation options of child" do
         | 
| 161 | 
            +
                    @article = ArticleValidateChildOverwrite.new(LONG_ATTRIBUTES)
         | 
| 162 | 
            +
                    @article.valid?
         | 
| 163 | 
            +
                    @article.errors["string_1"].join.should =~ /too long/
         | 
| 164 | 
            +
                    @article.errors["string_2"].join.should =~ /too long/
         | 
| 165 | 
            +
                  end
         | 
| 166 | 
            +
                end
         | 
| 167 | 
            +
             | 
| 133 168 | 
             
                context "an article with short attributes" do
         | 
| 134 169 | 
             
                  before { @article = ArticleValidateAll.new(SHORT_ATTRIBUTES); @article.valid? }
         | 
| 135 170 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: validates_lengths_from_database
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.5. | 
| 4 | 
            +
              version: 0.5.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ben Hughes
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-04- | 
| 11 | 
            +
            date: 2017-04-28 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activerecord
         |