aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2008-05-16 23:01:32 +0100
committerPratik Naik <pratiknaik@gmail.com>2008-05-16 23:21:35 +0100
commit46f30f902fb5e705683dea19ec22179c61e5f208 (patch)
treea733a5c24ba1411968e448185a7097be1151e63a /activerecord/lib/active_record
parent345f030c5b6c0a28ddde56c80a1112b00d345c79 (diff)
downloadrails-46f30f902fb5e705683dea19ec22179c61e5f208.tar.gz
rails-46f30f902fb5e705683dea19ec22179c61e5f208.tar.bz2
rails-46f30f902fb5e705683dea19ec22179c61e5f208.zip
Merge documentation changes from docrails.
commit 0fc3381aa5359f31b36057d7bfba2e0eb6a3c064 Author: Xavier Noria <fxn@hashref.com> Date: Fri May 16 23:44:51 2008 +0200 Conventions. Formatting. Revising docs all over the rails. This revision encourages the modern resource-oriented form_for usage. In addition corrects some markup and other details. commit 70e4bcf5cb039bea073851faed2df9f465e6f2f8 Author: Chris Kampmeier <chris@kampers.net> Date: Fri May 16 12:09:46 2008 -0700 Fix a couple spelling errors in docs commit 6ea5e4208f724b50e774e6a1af027336c3ee3de1 Author: Chris O'Sullivan <thechrisoshow@gmail.com> Date: Fri May 16 16:09:11 2008 +0100 Added docs about source_type for has_one association commit a01a0178be297b0eb62909819a15a01c6b69a841 Author: miloops <miloops@gmail.com> Date: Wed May 14 09:22:39 2008 +0000 Change migration generator USAGE to explain the timestamped migrations behaviour commit 4e2bc02163aa646ab1304b1b5bec98a7af8927f5 Author: Xavier Noria <fxn@hashref.com> Date: Fri May 16 00:43:03 2008 +0200 minor revision in url_for docs Made explicit that RESTful and controller/action styles are not interchangeable, and revised some markup. commit d6ecce66f4e125531875006eea8022b73fe135b5 Author: Michael Hartl <michael@michaelhartl.com> Date: Thu May 15 10:46:40 2008 -0700 Expanded and updated the link_to documentation commit b8c46c86f0b785f6afc3c58eeb1b347543f5901e Author: Cody Fauser <cody@jadedpixel.com> Date: Wed May 14 09:10:02 2008 -0400 Improve and cleanup ActionMailer documentation commit 9546ee299952c86329c4854f9b3776382c0575ff Author: Yehuda Katz <wycats@gmail.com> Date: Mon May 12 23:41:43 2008 -0700 Add documentation for Inflector.inflections commit cbd5db8f5165f013069b02414f9bf762d88f619f Author: Manik Juneja <mjuneja@manik-junejas-computer.local> Date: Mon May 12 23:43:31 2008 +0530 minor changes in railties/README. Added dbconsole introduction commit 130a280ddee1f96ccf378b52c17ee742b5e54f4a Author: Gaurav Sharma <gaurav@norbauer.com> Date: Mon May 12 18:00:19 2008 +0530 adding documentation for cached_attributes commit 164c9586480f0a02522ea15ec7fb42c6a783a74d Author: TomK32 <tomk32@tomk32.de> Date: Mon May 12 10:59:33 2008 +0200 proper heading for "Example:" commit 35634feb474cc55fbc95edeffe98cec241d45f23 Author: Matt Boehlig <thetamind@gmail.com> Date: Sun May 11 16:46:07 2008 -0500 Cleanup whitespace and change_table documentation commit 80bba28a1a56a0cafeb0fc94659905e88129bc31 Author: Xavier Noria <fxn@hashref.com> Date: Sun May 11 02:54:02 2008 +0200 documented the source annotation extractor commit e6823bb1650d9b0fea58bd2d355f388961a408b3 Author: Mike Mondragon <mikemondragon@gmail.com> Date: Fri May 9 13:49:56 2008 -0700 Added additional information about processing email with ActionMailer and the strategy one might want to employ to do so. commit e6afd8b2736364322b673bbdcca3e9b38b6d3da0 Author: Xavier Noria <fxn@hashref.com> Date: Thu May 8 23:49:36 2008 +0200 corrected and completed docs of increment/decrement/toggle in AR::Base commit 2fead68b3192332eee27945ed95a94a64ca73f70 Author: Austin Putman <austin@emmanuel.local> Date: Wed May 7 19:35:46 2008 -0700 Documented class methods on ActionController::Routing. These are dangerous, and mostly used for testing. commit f5b84182dbc39bea79c8ee319c688d00fa99f9d1 Author: Teflon Ted <github@rudiment.net> Date: Wed May 7 16:08:49 2008 -0400 Added explanation about errant inflections not being patched in the future in order to avoid breaking legacy applications. commit 370f4f51722cec49ace17093d29e9ce9e8f15cfb Author: Sunny Ripert <negatif@gmail.com> Date: Wed May 7 14:00:59 2008 +0200 Applied list conventions in AR::Base commit 5bd18429f09d44e75191bec42a6db04bd33f3030 Author: Sunny Ripert <negatif@gmail.com> Date: Wed May 7 13:53:35 2008 +0200 Renamed Options list to Attributes list whenever they weren't option hashes in AR::Base commit 2fa628e34b25166afb49e3afeea87e770ab84256 Author: Xavier Noria <fxn@hashref.com> Date: Wed May 7 11:52:33 2008 +0200 revised details in Exceptions section of AR::Base docs commit d912bd5672316454457ae83f6e9dda5197beeb6f Author: Yaroslav Markin <yaroslav@markin.net> Date: Wed May 7 13:50:28 2008 +0400 Add a filter_parameter_logging usage hint to generated ApplicationController. This may help to remind the developer to filter sensitive information from application logs. Closes #11578 commit f81d771f0657ae8375b84a77a059812cce5d6fd9 Author: Jack Danger Canty <git@6brand.com> Date: Tue May 6 23:35:05 2008 -0700 doc: ActiveRecord::Reflection::AssociationReflection#through_reflection Added documentation demonstrating the use of #through_reflection for finding intervening reflection objects for HasManyThrough and HasOneThrough. commit ae6b46f00b5b8b2939c6b37ce3329c83de7e71db Author: Cheah Chu Yeow <chuyeow@gmail.com> Date: Wed May 7 13:47:41 2008 +0800 Document AttributeAssignmentError and MultiparameterAssignmentErrors. commit 8f463550b597db2156b67733f31aed13487fbc3a Author: John Barnette <jbarnette@gmail.com> Date: Tue May 6 22:46:44 2008 -0700 Killing/fixing a bunch of outdated language in the AR README. commit 284a930a93fbee16e25d06392779dbf2f03e9e12 Author: Jonathan Dance <jd@wuputah.com> Date: Tue May 6 14:58:26 2008 -0400 improvements to the page caching docs commit 9482da621390c874da7c921c8bd6230caae7035a Author: Sunny Ripert <negatif@gmail.com> Date: Mon May 5 18:13:40 2008 +0200 validates_numericality_of() "integer" option really is "only_integer" commit e9afd6790a8f530528f6597a7f59bb283be754f6 Author: Sunny Ripert <negatif@gmail.com> Date: Mon May 5 12:11:59 2008 +0200 Harmonized hash notation in AR::Base commit 67ebf14a91ffd970b582be4ff2991d691a9cf3e1 Author: Sunny Ripert <negatif@gmail.com> Date: Mon May 5 12:06:19 2008 +0200 Turned options into rdoc-lists in AR::Base commit 0ec7c0a41d889d4e5382b9dff72f1aaba89bf297 Author: Marshall Huss <mwhuss@Macbook.local> Date: Sun May 4 23:21:33 2008 -0400 Added information of how to set element_name in the case the user has a name confliction with an existing model Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/associations.rb2
-rw-r--r--activerecord/lib/active_record/attribute_methods.rb40
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb90
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb20
4 files changed, 80 insertions, 72 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb
index c17e35f5e0..95caf68692 100644
--- a/activerecord/lib/active_record/associations.rb
+++ b/activerecord/lib/active_record/associations.rb
@@ -753,6 +753,8 @@ module ActiveRecord
# * <tt>:source</tt> - Specifies the source association name used by <tt>has_one :through</tt> queries. Only use it if the name cannot be
# inferred from the association. <tt>has_one :favorite, :through => :favorites</tt> will look for a
# <tt>:favorite</tt> on Favorite, unless a <tt>:source</tt> is given.
+ # * <tt>:source_type</tt> - Specifies type of the source association used by <tt>has_one :through</tt> queries where the source
+ # association is a polymorphic +belongs_to+.
# * <tt>:readonly</tt> - If true, the associated object is readonly through the association.
#
# Option examples:
diff --git a/activerecord/lib/active_record/attribute_methods.rb b/activerecord/lib/active_record/attribute_methods.rb
index 2db27226f2..c2604894a8 100644
--- a/activerecord/lib/active_record/attribute_methods.rb
+++ b/activerecord/lib/active_record/attribute_methods.rb
@@ -16,16 +16,20 @@ module ActiveRecord
# Declare and check for suffixed attribute methods.
module ClassMethods
- # Declare a method available for all attributes with the given suffix.
- # Uses method_missing and respond_to? to rewrite the method
+ # Declares a method available for all attributes with the given suffix.
+ # Uses +method_missing+ and <tt>respond_to?</tt> to rewrite the method
+ #
# #{attr}#{suffix}(*args, &block)
+ #
# to
+ #
# attribute#{suffix}(#{attr}, *args, &block)
#
- # An attribute#{suffix} instance method must exist and accept at least
- # the attr argument.
+ # An <tt>attribute#{suffix}</tt> instance method must exist and accept at least
+ # the +attr+ argument.
#
# For example:
+ #
# class Person < ActiveRecord::Base
# attribute_method_suffix '_changed?'
#
@@ -60,8 +64,8 @@ module ActiveRecord
!generated_methods.empty?
end
- # generates all the attribute related methods for columns in the database
- # accessors, mutators and query methods
+ # Generates all the attribute related methods for columns in the database
+ # accessors, mutators and query methods.
def define_attribute_methods
return if generated_methods?
columns_hash.each do |name, column|
@@ -89,8 +93,9 @@ module ActiveRecord
end
end
- # Check to see if the method is defined in the model or any of its subclasses that also derive from ActiveRecord.
- # Raise DangerousAttributeError if the method is defined by ActiveRecord though.
+ # Checks whether the method is defined in the model or any of its subclasses
+ # that also derive from ActiveRecord. Raises DangerousAttributeError if the
+ # method is defined by Active Record though.
def instance_method_already_implemented?(method_name)
method_name = method_name.to_s
return true if method_name =~ /^id(=$|\?$|$)/
@@ -104,17 +109,19 @@ module ActiveRecord
# +cache_attributes+ allows you to declare which converted attribute values should
# be cached. Usually caching only pays off for attributes with expensive conversion
- # methods, like date columns (e.g. created_at, updated_at).
+ # methods, like time related columns (e.g. +created_at+, +updated_at+).
def cache_attributes(*attribute_names)
attribute_names.each {|attr| cached_attributes << attr.to_s}
end
- # returns the attributes where
+ # Returns the attributes which are cached. By default time related columns
+ # with datatype <tt>:datetime, :timestamp, :time, :date</tt> are cached.
def cached_attributes
@cached_attributes ||=
columns.select{|c| attribute_types_cached_by_default.include?(c.type)}.map(&:name).to_set
end
+ # Returns +true+ if the provided attribute is being cached.
def cache_attribute?(attr_name)
cached_attributes.include?(attr_name)
end
@@ -210,14 +217,14 @@ module ActiveRecord
end # ClassMethods
- # Allows access to the object attributes, which are held in the @attributes hash, as though they
+ # Allows access to the object attributes, which are held in the <tt>@attributes</tt> hash, as though they
# were first-class methods. So a Person class with a name attribute can use Person#name and
# Person#name= and never directly use the attributes hash -- except for multiple assigns with
# ActiveRecord#attributes=. A Milestone class can also ask Milestone#completed? to test that
- # the completed attribute is not nil or 0.
+ # the completed attribute is not +nil+ or 0.
#
# It's also possible to instantiate related objects, so a Client class belonging to the clients
- # table with a master_id foreign key can instantiate master through Client#master.
+ # table with a +master_id+ foreign key can instantiate master through Client#master.
def method_missing(method_id, *args, &block)
method_name = method_id.to_s
@@ -288,7 +295,7 @@ module ActiveRecord
# Updates the attribute identified by <tt>attr_name</tt> with the specified +value+. Empty strings for fixnum and float
- # columns are turned into nil.
+ # columns are turned into +nil+.
def write_attribute(attr_name, value)
attr_name = attr_name.to_s
@attributes_cache.delete(attr_name)
@@ -319,8 +326,9 @@ module ActiveRecord
end
end
- # A Person object with a name attribute can ask person.respond_to?("name"), person.respond_to?("name="), and
- # person.respond_to?("name?") which will all return true.
+ # A Person object with a name attribute can ask <tt>person.respond_to?("name")</tt>,
+ # <tt>person.respond_to?("name=")</tt>, and <tt>person.respond_to?("name?")</tt>
+ # which will all return +true+.
alias :respond_to_without_attributes? :respond_to?
def respond_to?(method, include_priv = false)
method_name = method.to_s
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
index d73ffc3da6..fdb18b234c 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
@@ -18,11 +18,11 @@ module ActiveRecord
#
# +name+ is the column's name, as in <tt><b>supplier_id</b> int(11)</tt>.
# +default+ is the type-casted default value, such as <tt>sales_stage varchar(20) default <b>'new'</b></tt>.
- # +sql_type+ is only used to extract the column's length, if necessary. For example, <tt>company_name varchar(<b>60</b>)</tt>.
+ # +sql_type+ is only used to extract the column's length, if necessary. For example, <tt>company_name varchar(<b>60</b>)</tt>.
# +null+ determines if this column allows +NULL+ values.
def initialize(name, default, sql_type = nil, null = true)
@name, @sql_type, @null = name, sql_type, null
- @limit, @precision, @scale = extract_limit(sql_type), extract_precision(sql_type), extract_scale(sql_type)
+ @limit, @precision, @scale = extract_limit(sql_type), extract_precision(sql_type), extract_scale(sql_type)
@type = simplified_type(sql_type)
@default = extract_default(default)
@@ -172,7 +172,7 @@ module ActiveRecord
def new_time(year, mon, mday, hour, min, sec, microsec)
# Treat 0000-00-00 00:00:00 as nil.
return nil if year.nil? || year == 0
-
+
Time.time_with_datetime_fallback(Base.default_timezone, year, mon, mday, hour, min, sec, microsec) rescue nil
end
@@ -250,11 +250,11 @@ module ActiveRecord
end
class ColumnDefinition < Struct.new(:base, :name, :type, :limit, :precision, :scale, :default, :null) #:nodoc:
-
+
def sql_type
base.type_to_sql(type.to_sym, limit, precision, scale) rescue type
end
-
+
def to_sql
column_sql = "#{base.quote_column_name(name)} #{sql_type}"
add_column_options!(column_sql, :null => null, :default => default) unless type.to_sym == :primary_key
@@ -309,39 +309,39 @@ module ActiveRecord
# * <tt>:default</tt> -
# The column's default value. Use nil for NULL.
# * <tt>:null</tt> -
- # Allows or disallows +NULL+ values in the column. This option could
+ # Allows or disallows +NULL+ values in the column. This option could
# have been named <tt>:null_allowed</tt>.
# * <tt>:precision</tt> -
- # Specifies the precision for a <tt>:decimal</tt> column.
+ # Specifies the precision for a <tt>:decimal</tt> column.
# * <tt>:scale</tt> -
- # Specifies the scale for a <tt>:decimal</tt> column.
+ # Specifies the scale for a <tt>:decimal</tt> column.
#
# Please be aware of different RDBMS implementations behavior with
# <tt>:decimal</tt> columns:
# * The SQL standard says the default scale should be 0, <tt>:scale</tt> <=
# <tt>:precision</tt>, and makes no comments about the requirements of
# <tt>:precision</tt>.
- # * MySQL: <tt>:precision</tt> [1..63], <tt>:scale</tt> [0..30].
+ # * MySQL: <tt>:precision</tt> [1..63], <tt>:scale</tt> [0..30].
# Default is (10,0).
- # * PostgreSQL: <tt>:precision</tt> [1..infinity],
+ # * PostgreSQL: <tt>:precision</tt> [1..infinity],
# <tt>:scale</tt> [0..infinity]. No default.
- # * SQLite2: Any <tt>:precision</tt> and <tt>:scale</tt> may be used.
+ # * SQLite2: Any <tt>:precision</tt> and <tt>:scale</tt> may be used.
# Internal storage as strings. No default.
# * SQLite3: No restrictions on <tt>:precision</tt> and <tt>:scale</tt>,
# but the maximum supported <tt>:precision</tt> is 16. No default.
- # * Oracle: <tt>:precision</tt> [1..38], <tt>:scale</tt> [-84..127].
+ # * Oracle: <tt>:precision</tt> [1..38], <tt>:scale</tt> [-84..127].
# Default is (38,0).
- # * DB2: <tt>:precision</tt> [1..63], <tt>:scale</tt> [0..62].
+ # * DB2: <tt>:precision</tt> [1..63], <tt>:scale</tt> [0..62].
# Default unknown.
- # * Firebird: <tt>:precision</tt> [1..18], <tt>:scale</tt> [0..18].
+ # * Firebird: <tt>:precision</tt> [1..18], <tt>:scale</tt> [0..18].
# Default (9,0). Internal types NUMERIC and DECIMAL have different
# storage rules, decimal being better.
- # * FrontBase?: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
+ # * FrontBase?: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
# Default (38,0). WARNING Max <tt>:precision</tt>/<tt>:scale</tt> for
# NUMERIC is 19, and DECIMAL is 38.
- # * SqlServer?: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
+ # * SqlServer?: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
# Default (38,0).
- # * Sybase: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
+ # * Sybase: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
# Default (38,0).
# * OpenBase?: Documentation unclear. Claims storage in <tt>double</tt>.
#
@@ -394,7 +394,7 @@ module ActiveRecord
# t.timestamps
# end
#
- # There's a short-hand method for each of the type values declared at the top. And then there's
+ # There's a short-hand method for each of the type values declared at the top. And then there's
# TableDefinition#timestamps that'll add created_at and updated_at as datetimes.
#
# TableDefinition#references will add an appropriately-named _id column, plus a corresponding _type
@@ -434,13 +434,13 @@ module ActiveRecord
def #{column_type}(*args)
options = args.extract_options!
column_names = args
-
+
column_names.each { |name| column(name, '#{column_type}', options) }
end
EOV
end
-
- # Appends <tt>:datetime</tt> columns <tt>:created_at</tt> and
+
+ # Appends <tt>:datetime</tt> columns <tt>:created_at</tt> and
# <tt>:updated_at</tt> to the table.
def timestamps
column(:created_at, :datetime)
@@ -458,7 +458,7 @@ module ActiveRecord
alias :belongs_to :references
# Returns a String whose contents are the column definitions
- # concatenated together. This string can then be prepended and appended to
+ # concatenated together. This string can then be prepended and appended to
# to generate the final SQL to create the table.
def to_sql
@columns * ', '
@@ -510,15 +510,15 @@ module ActiveRecord
# Adds a new column to the named table.
# See TableDefinition#column for details of the options you can use.
- # ===== Examples
- # ====== Creating a simple columns
+ # ===== Example
+ # ====== Creating a simple column
# t.column(:name, :string)
def column(column_name, type, options = {})
@base.add_column(@table_name, column_name, type, options)
end
- # Adds a new index to the table. +column_name+ can be a single Symbol, or
- # an Array of Symbols. See SchemaStatements#add_index
+ # Adds a new index to the table. +column_name+ can be a single Symbol, or
+ # an Array of Symbols. See SchemaStatements#add_index
#
# ===== Examples
# ====== Creating a simple index
@@ -531,8 +531,8 @@ module ActiveRecord
@base.add_index(@table_name, column_name, options)
end
- # Adds timestamps (created_at and updated_at) columns to the table. See SchemaStatements#timestamps
- # ===== Examples
+ # Adds timestamps (created_at and updated_at) columns to the table. See SchemaStatements#add_timestamps
+ # ===== Example
# t.timestamps
def timestamps
@base.add_timestamps(@table_name)
@@ -547,7 +547,7 @@ module ActiveRecord
@base.change_column(@table_name, column_name, type, options)
end
- # Sets a new default value for a column. See
+ # Sets a new default value for a column. See SchemaStatements#change_column_default
# ===== Examples
# t.change_default(:qualification, 'new')
# t.change_default(:authorized, 1)
@@ -559,27 +559,27 @@ module ActiveRecord
# ===== Examples
# t.remove(:qualification)
# t.remove(:qualification, :experience)
- # t.removes(:qualification, :experience)
def remove(*column_names)
@base.remove_column(@table_name, column_names)
end
- # Remove the given index from the table.
+ # Removes the given index from the table.
#
- # Remove the suppliers_name_index in the suppliers table.
+ # ===== Examples
+ # ====== Remove the suppliers_name_index in the suppliers table
# t.remove_index :name
- # Remove the index named accounts_branch_id_index in the accounts table.
+ # ====== Remove the index named accounts_branch_id_index in the accounts table
# t.remove_index :column => :branch_id
- # Remove the index named accounts_branch_id_party_id_index in the accounts table.
+ # ====== Remove the index named accounts_branch_id_party_id_index in the accounts table
# t.remove_index :column => [:branch_id, :party_id]
- # Remove the index named by_branch_party in the accounts table.
+ # ====== Remove the index named by_branch_party in the accounts table
# t.remove_index :name => :by_branch_party
def remove_index(options = {})
@base.remove_index(@table_name, options)
end
# Removes the timestamp columns (created_at and updated_at) from the table.
- # ===== Examples
+ # ===== Example
# t.remove_timestamps
def remove_timestamps
@base.remove_timestamps(@table_name)
@@ -592,12 +592,11 @@ module ActiveRecord
@base.rename_column(@table_name, column_name, new_column_name)
end
- # Adds a reference. Optionally adds a +type+ column. <tt>reference</tt>,
- # <tt>references</tt> and <tt>belongs_to</tt> are all acceptable
- # ===== Example
+ # Adds a reference. Optionally adds a +type+ column.
+ # <tt>references</tt> and <tt>belongs_to</tt> are acceptable.
+ # ===== Examples
# t.references(:goat)
# t.references(:goat, :polymorphic => true)
- # t.references(:goat)
# t.belongs_to(:goat)
def references(*args)
options = args.extract_options!
@@ -609,12 +608,11 @@ module ActiveRecord
end
alias :belongs_to :references
- # Adds a reference. Optionally removes a +type+ column. <tt>remove_reference</tt>,
- # <tt>remove_references</tt> and <tt>remove_belongs_to</tt> are all acceptable
- # ===== Example
- # t.remove_reference(:goat)
- # t.remove_reference(:goat, :polymorphic => true)
+ # Removes a reference. Optionally removes a +type+ column.
+ # <tt>remove_references</tt> and <tt>remove_belongs_to</tt> are acceptable.
+ # ===== Examples
# t.remove_references(:goat)
+ # t.remove_references(:goat, :polymorphic => true)
# t.remove_belongs_to(:goat)
def remove_references(*args)
options = args.extract_options!
@@ -627,7 +625,7 @@ module ActiveRecord
alias :remove_belongs_to :remove_references
# Adds a column or columns of a specified type
- # ===== Example
+ # ===== Examples
# t.string(:goat)
# t.string(:goat, :sheep)
%w( string text integer float decimal datetime timestamp time date binary boolean ).each do |column_type|
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
index 1594be40e2..ac24e920fe 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -13,7 +13,7 @@ module ActiveRecord
255
end
- # Truncates a table alias according to the limits of the current adapter.
+ # Truncates a table alias according to the limits of the current adapter.
def table_alias_for(table_name)
table_name[0..table_alias_length-1].gsub(/\./, '_')
end
@@ -152,7 +152,7 @@ module ActiveRecord
# t.remove :company
# end
#
- # ====== Remove a column
+ # ====== Remove several columns
# change_table(:suppliers) do |t|
# t.remove :company_id
# t.remove :width, :height
@@ -168,7 +168,7 @@ module ActiveRecord
def change_table(table_name)
yield Table.new(table_name, self)
end
-
+
# Renames a table.
# ===== Example
# rename_table('octopuses', 'octopi')
@@ -199,7 +199,7 @@ module ActiveRecord
end
end
alias :remove_columns :remove_column
-
+
# Changes the column's definition according to the new options.
# See TableDefinition#column for details of the options you can use.
# ===== Examples
@@ -389,7 +389,7 @@ module ActiveRecord
def distinct(columns, order_by)
"DISTINCT #{columns}"
end
-
+
# ORDER BY clause for the passed order option.
# PostgreSQL overrides this due to its stricter standards compliance.
def add_order_by_for_association_limiting!(sql, options)
@@ -401,17 +401,17 @@ module ActiveRecord
# add_timestamps(:suppliers)
def add_timestamps(table_name)
add_column table_name, :created_at, :datetime
- add_column table_name, :updated_at, :datetime
+ add_column table_name, :updated_at, :datetime
end
-
+
# Removes the timestamp columns (created_at and updated_at) from the table definition.
# ===== Examples
# remove_timestamps(:suppliers)
def remove_timestamps(table_name)
- remove_column table_name, :updated_at
- remove_column table_name, :created_at
+ remove_column table_name, :updated_at
+ remove_column table_name, :created_at
end
-
+
protected
def options_include_default?(options)
options.include?(:default) && !(options[:null] == false && options[:default].nil?)