activerecord 1.14.3 → 1.14.4
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.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- data/CHANGELOG +13 -0
 - data/lib/active_record/base.rb +1 -1
 - data/lib/active_record/callbacks.rb +11 -0
 - data/lib/active_record/migration.rb +4 -3
 - data/lib/active_record/validations.rb +12 -0
 - data/lib/active_record/version.rb +1 -1
 - data/test/base_test.rb +10 -0
 - metadata +2 -2
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,5 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            *1.14.4* (August 8th, 2006)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Add warning about the proper way to validate the presence of a foreign key.  #4147 [Francois Beausoleil <francois.beausoleil@gmail.com>]
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            * Fix syntax error in documentation. #4679 [mislav@nippur.irb.hr] 
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            * Update inconsistent migrations documentation. #4683 [machomagna@gmail.com]
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       1 
10 
     | 
    
         
             
            *1.14.3* (June 27th, 2006)
         
     | 
| 
       2 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
            * Fix announcement of very long migration names.  #5722 [blake@near-time.com]
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            * Update callbacks documentation. #3970 [Robby Russell <robby@planetargon.com>]
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       3 
16 
     | 
    
         
             
            * Properly quote index names in migrations (closes #4764) [John Long]
         
     | 
| 
       4 
17 
     | 
    
         | 
| 
       5 
18 
     | 
    
         
             
            * Ensure that Associations#include_eager_conditions? checks both scoped and explicit conditions [Rick]
         
     | 
    
        data/lib/active_record/base.rb
    CHANGED
    
    | 
         @@ -175,7 +175,7 @@ module ActiveRecord #:nodoc: 
     | 
|
| 
       175 
175 
     | 
    
         
             
              #     serialize :preferences
         
     | 
| 
       176 
176 
     | 
    
         
             
              #   end
         
     | 
| 
       177 
177 
     | 
    
         
             
              #
         
     | 
| 
       178 
     | 
    
         
            -
              #   user = User.create(:preferences 
     | 
| 
      
 178 
     | 
    
         
            +
              #   user = User.create(:preferences => { "background" => "black", "display" => large })
         
     | 
| 
       179 
179 
     | 
    
         
             
              #   User.find(user.id).preferences # => { "background" => "black", "display" => large }
         
     | 
| 
       180 
180 
     | 
    
         
             
              #
         
     | 
| 
       181 
181 
     | 
    
         
             
              # You can also specify a class option as the second parameter that'll raise an exception if a serialized object is retrieved as a
         
     | 
| 
         @@ -243,6 +243,10 @@ module ActiveRecord 
     | 
|
| 
       243 
243 
     | 
    
         
             
                def before_save() end
         
     | 
| 
       244 
244 
     | 
    
         | 
| 
       245 
245 
     | 
    
         
             
                # Is called _after_ Base.save (regardless of whether it's a create or update save).
         
     | 
| 
      
 246 
     | 
    
         
            +
                #
         
     | 
| 
      
 247 
     | 
    
         
            +
                #  class Contact < ActiveRecord::Base
         
     | 
| 
      
 248 
     | 
    
         
            +
                #    after_save { logger.info( 'New contact saved!' ) }
         
     | 
| 
      
 249 
     | 
    
         
            +
                #  end
         
     | 
| 
       246 
250 
     | 
    
         
             
                def after_save()  end
         
     | 
| 
       247 
251 
     | 
    
         
             
                def create_or_update_with_callbacks #:nodoc:
         
     | 
| 
       248 
252 
     | 
    
         
             
                  return false if callback(:before_save) == false
         
     | 
| 
         @@ -312,9 +316,16 @@ module ActiveRecord 
     | 
|
| 
       312 
316 
     | 
    
         
             
                end
         
     | 
| 
       313 
317 
     | 
    
         | 
| 
       314 
318 
     | 
    
         
             
                # Is called _before_ Base.destroy.
         
     | 
| 
      
 319 
     | 
    
         
            +
                #
         
     | 
| 
      
 320 
     | 
    
         
            +
                # Note: If you need to _destroy_ or _nullify_ associated records first,
         
     | 
| 
      
 321 
     | 
    
         
            +
                # use the _:dependent_ option on your associations.
         
     | 
| 
       315 
322 
     | 
    
         
             
                def before_destroy() end
         
     | 
| 
       316 
323 
     | 
    
         | 
| 
       317 
324 
     | 
    
         
             
                # Is called _after_ Base.destroy (and all the attributes have been frozen).
         
     | 
| 
      
 325 
     | 
    
         
            +
                #
         
     | 
| 
      
 326 
     | 
    
         
            +
                #  class Contact < ActiveRecord::Base
         
     | 
| 
      
 327 
     | 
    
         
            +
                #    after_destroy { |record| logger.info( "Contact #{record.id} was destroyed." ) }
         
     | 
| 
      
 328 
     | 
    
         
            +
                #  end
         
     | 
| 
       318 
329 
     | 
    
         
             
                def after_destroy()  end
         
     | 
| 
       319 
330 
     | 
    
         
             
                def destroy_with_callbacks #:nodoc:
         
     | 
| 
       320 
331 
     | 
    
         
             
                  return false if callback(:before_destroy) == false
         
     | 
| 
         @@ -70,8 +70,8 @@ module ActiveRecord 
     | 
|
| 
       70 
70 
     | 
    
         
             
              # * <tt>change_column(table_name, column_name, type, options)</tt>:  Changes the column to a different type using the same
         
     | 
| 
       71 
71 
     | 
    
         
             
              #   parameters as add_column.
         
     | 
| 
       72 
72 
     | 
    
         
             
              # * <tt>remove_column(table_name, column_name)</tt>: Removes the column named +column_name+ from the table called +table_name+.
         
     | 
| 
       73 
     | 
    
         
            -
              # * <tt>add_index(table_name,  
     | 
| 
       74 
     | 
    
         
            -
              # * <tt>remove_index(table_name,  
     | 
| 
      
 73 
     | 
    
         
            +
              # * <tt>add_index(table_name, column_names, index_type, index_name)</tt>: Add a new index with the name of the column, or +index_name+ (if specified) on the column(s). Specify an optional +index_type+ (e.g. UNIQUE).
         
     | 
| 
      
 74 
     | 
    
         
            +
              # * <tt>remove_index(table_name, index_name)</tt>: Remove the index specified by +index_name+.
         
     | 
| 
       75 
75 
     | 
    
         
             
              #
         
     | 
| 
       76 
76 
     | 
    
         
             
              # == Irreversible transformations
         
     | 
| 
       77 
77 
     | 
    
         
             
              #
         
     | 
| 
         @@ -243,7 +243,8 @@ module ActiveRecord 
     | 
|
| 
       243 
243 
     | 
    
         | 
| 
       244 
244 
     | 
    
         
             
                  def announce(message)
         
     | 
| 
       245 
245 
     | 
    
         
             
                    text = "#{name}: #{message}"
         
     | 
| 
       246 
     | 
    
         
            -
                     
     | 
| 
      
 246 
     | 
    
         
            +
                    length = [0, 75 - text.length].max
         
     | 
| 
      
 247 
     | 
    
         
            +
                    write "== %s %s" % [text, "=" * length]
         
     | 
| 
       247 
248 
     | 
    
         
             
                  end
         
     | 
| 
       248 
249 
     | 
    
         | 
| 
       249 
250 
     | 
    
         
             
                  def say(message, subitem=false)
         
     | 
| 
         @@ -381,6 +381,18 @@ module ActiveRecord 
     | 
|
| 
       381 
381 
     | 
    
         
             
                  # * <tt>if</tt> - Specifies a method, proc or string to call to determine if the validation should
         
     | 
| 
       382 
382 
     | 
    
         
             
                  # occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }).  The
         
     | 
| 
       383 
383 
     | 
    
         
             
                  # method, proc or string should return or evaluate to a true or false value.
         
     | 
| 
      
 384 
     | 
    
         
            +
                  #
         
     | 
| 
      
 385 
     | 
    
         
            +
                  # === Warning
         
     | 
| 
      
 386 
     | 
    
         
            +
                  # Validate the presence of the foreign key, not the instance variable itself.
         
     | 
| 
      
 387 
     | 
    
         
            +
                  # Do this:
         
     | 
| 
      
 388 
     | 
    
         
            +
                  #  validate_presence_of :invoice_id
         
     | 
| 
      
 389 
     | 
    
         
            +
                  #
         
     | 
| 
      
 390 
     | 
    
         
            +
                  # Not this:
         
     | 
| 
      
 391 
     | 
    
         
            +
                  #  validate_presence_of :invoice
         
     | 
| 
      
 392 
     | 
    
         
            +
                  #
         
     | 
| 
      
 393 
     | 
    
         
            +
                  # If you validate the presence of the associated object, you will get
         
     | 
| 
      
 394 
     | 
    
         
            +
                  # failures on saves when both the parent object and the child object are
         
     | 
| 
      
 395 
     | 
    
         
            +
                  # new.
         
     | 
| 
       384 
396 
     | 
    
         
             
                  def validates_presence_of(*attr_names)
         
     | 
| 
       385 
397 
     | 
    
         
             
                    configuration = { :message => ActiveRecord::Errors.default_error_messages[:blank], :on => :save }
         
     | 
| 
       386 
398 
     | 
    
         
             
                    configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
         
     | 
    
        data/test/base_test.rb
    CHANGED
    
    | 
         @@ -922,6 +922,16 @@ class BasicsTest < Test::Unit::TestCase 
     | 
|
| 
       922 
922 
     | 
    
         
             
                assert_equal("<baz>", inverted["quux"])
         
     | 
| 
       923 
923 
     | 
    
         
             
              end
         
     | 
| 
       924 
924 
     | 
    
         | 
| 
      
 925 
     | 
    
         
            +
              def test_sql_injection_via_find
         
     | 
| 
      
 926 
     | 
    
         
            +
                assert_raises(ActiveRecord::RecordNotFound) do
         
     | 
| 
      
 927 
     | 
    
         
            +
                  Topic.find("123456 OR id > 0")
         
     | 
| 
      
 928 
     | 
    
         
            +
                end
         
     | 
| 
      
 929 
     | 
    
         
            +
             
     | 
| 
      
 930 
     | 
    
         
            +
                assert_raises(ActiveRecord::RecordNotFound) do
         
     | 
| 
      
 931 
     | 
    
         
            +
                  Topic.find(";;; this should raise an RecordNotFound error")
         
     | 
| 
      
 932 
     | 
    
         
            +
                end
         
     | 
| 
      
 933 
     | 
    
         
            +
              end
         
     | 
| 
      
 934 
     | 
    
         
            +
             
     | 
| 
       925 
935 
     | 
    
         
             
              def test_column_name_properly_quoted
         
     | 
| 
       926 
936 
     | 
    
         
             
                col_record = ColumnName.new
         
     | 
| 
       927 
937 
     | 
    
         
             
                col_record.references = 40
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -3,8 +3,8 @@ rubygems_version: 0.8.11 
     | 
|
| 
       3 
3 
     | 
    
         
             
            specification_version: 1
         
     | 
| 
       4 
4 
     | 
    
         
             
            name: activerecord
         
     | 
| 
       5 
5 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       6 
     | 
    
         
            -
              version: 1.14. 
     | 
| 
       7 
     | 
    
         
            -
            date: 2006- 
     | 
| 
      
 6 
     | 
    
         
            +
              version: 1.14.4
         
     | 
| 
      
 7 
     | 
    
         
            +
            date: 2006-08-09 00:00:00 -05:00
         
     | 
| 
       8 
8 
     | 
    
         
             
            summary: Implements the ActiveRecord pattern for ORM.
         
     | 
| 
       9 
9 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            - lib
         
     |