Merge remote branch 'docrails/master'
This commit is contained in:
commit
3cbe111439
@ -1,6 +1,6 @@
|
||||
= Action Pack -- From request to response
|
||||
|
||||
Action Pack is a framework for handling and responding to web requests. It it
|
||||
Action Pack is a framework for handling and responding to web requests. It
|
||||
provides mechanisms for *routing* (mapping request URLs to actions), defining
|
||||
*controllers* that implement actions, and generating responses by rendering
|
||||
*views*, which are templates of various formats. In short, Action Pack
|
||||
|
@ -37,11 +37,11 @@ module ActiveModel
|
||||
# send(attr)
|
||||
# end
|
||||
#
|
||||
# def ErrorsPerson.human_attribute_name(attr, options = {})
|
||||
# def Person.human_attribute_name(attr, options = {})
|
||||
# attr
|
||||
# end
|
||||
#
|
||||
# def ErrorsPerson.lookup_ancestors
|
||||
# def Person.lookup_ancestors
|
||||
# [self]
|
||||
# end
|
||||
#
|
||||
|
@ -61,6 +61,8 @@ module ActiveModel
|
||||
# person.serializable_hash # => {"name"=>"Bob"}
|
||||
# person.to_json # => "{\"name\":\"Bob\"}"
|
||||
# person.to_xml # => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<serial-person...
|
||||
#
|
||||
# Valid options are <tt>:only</tt>, <tt>:except</tt> and <tt>:methods</tt> .
|
||||
module Serialization
|
||||
def serializable_hash(options = nil)
|
||||
options ||= {}
|
||||
|
@ -24,7 +24,7 @@ def owner_quoted_id
|
||||
# If the association has a counter cache it gets that value. Otherwise
|
||||
# it will attempt to do a count via SQL, bounded to <tt>:limit</tt> if
|
||||
# there's one. Some configuration options like :group make it impossible
|
||||
# to do a SQL count, in those cases the array count will be used.
|
||||
# to do an SQL count, in those cases the array count will be used.
|
||||
#
|
||||
# That does not depend on whether the collection has already been loaded
|
||||
# or not. The +size+ method is the one that takes the loaded flag into
|
||||
|
@ -516,7 +516,8 @@ def count_by_sql(sql)
|
||||
connection.select_value(sql, "#{name} Count").to_i
|
||||
end
|
||||
|
||||
# Attributes listed as readonly can be set for a new record, but will be ignored in database updates afterwards.
|
||||
# Attributes listed as readonly will be used to create a new record but update operations will
|
||||
# ignore these fields.
|
||||
def attr_readonly(*attributes)
|
||||
write_inheritable_attribute(:attr_readonly, Set.new(attributes.map(&:to_s)) + (readonly_attributes || []))
|
||||
end
|
||||
@ -604,8 +605,8 @@ def full_table_name_prefix #:nodoc:
|
||||
(parents.detect{ |p| p.respond_to?(:table_name_prefix) } || self).table_name_prefix
|
||||
end
|
||||
|
||||
# Defines the column name for use with single table inheritance
|
||||
# -- can be set in subclasses like so: self.inheritance_column = "type_id"
|
||||
# Defines the column name for use with single table inheritance. Use
|
||||
# <tt>set_inheritance_column</tt> to set a different value.
|
||||
def inheritance_column
|
||||
@inheritance_column ||= "type".freeze
|
||||
end
|
||||
@ -622,8 +623,8 @@ def reset_sequence_name #:nodoc:
|
||||
default
|
||||
end
|
||||
|
||||
# Sets the table name to use to the given value, or (if the value
|
||||
# is nil or false) to the value returned by the given block.
|
||||
# Sets the table name. If the value is nil or false then the value returned by the given
|
||||
# block is used.
|
||||
#
|
||||
# class Project < ActiveRecord::Base
|
||||
# set_table_name "project"
|
||||
@ -1034,8 +1035,8 @@ def all_attributes_exists?(attribute_names)
|
||||
end
|
||||
|
||||
protected
|
||||
# Scope parameters to method calls within the block. Takes a hash of method_name => parameters hash.
|
||||
# method_name may be <tt>:find</tt> or <tt>:create</tt>. <tt>:find</tt> parameter is <tt>Relation</tt> while
|
||||
# with_scope lets you apply options to inner block incrementally. It takes a hash and the keys must be
|
||||
# <tt>:find</tt> or <tt>:create</tt>. <tt>:find</tt> parameter is <tt>Relation</tt> while
|
||||
# <tt>:create</tt> parameters are an attributes hash.
|
||||
#
|
||||
# class Article < ActiveRecord::Base
|
||||
@ -1080,8 +1081,7 @@ def all_attributes_exists?(attribute_names)
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# *Note*: the +:find+ scope also has effect on update and deletion methods,
|
||||
# like +update_all+ and +delete_all+.
|
||||
# *Note*: the +:find+ scope also has effect on update and deletion methods, like +update_all+ and +delete_all+.
|
||||
def with_scope(method_scoping = {}, action = :merge, &block)
|
||||
method_scoping = method_scoping.method_scoping if method_scoping.respond_to?(:method_scoping)
|
||||
|
||||
|
@ -68,8 +68,8 @@ module ActiveRecord
|
||||
# end
|
||||
#
|
||||
# Now, when <tt>Topic#destroy</tt> is run only +destroy_author+ is called. When <tt>Reply#destroy</tt> is
|
||||
# run, both +destroy_author+ and +destroy_readers+ are called. Contrast this to the situation where
|
||||
# we've implemented the save behavior through overwriteable methods:
|
||||
# run, both +destroy_author+ and +destroy_readers+ are called. Contrast this to the following situation
|
||||
# where the +before_destroy+ methis is overriden:
|
||||
#
|
||||
# class Topic < ActiveRecord::Base
|
||||
# def before_destroy() destroy_author end
|
||||
|
@ -42,7 +42,7 @@ def in_clause_length
|
||||
65535
|
||||
end
|
||||
|
||||
# the maximum length of a SQL query
|
||||
# the maximum length of an SQL query
|
||||
def sql_query_length
|
||||
1048575
|
||||
end
|
||||
|
@ -537,7 +537,7 @@ def native
|
||||
end
|
||||
end
|
||||
|
||||
# Represents a SQL table in an abstract way for updating a table.
|
||||
# Represents an SQL table in an abstract way for updating a table.
|
||||
# Also see TableDefinition and SchemaStatements#create_table
|
||||
#
|
||||
# Available transformations are:
|
||||
|
@ -278,7 +278,7 @@ def select_rows(sql, name = nil)
|
||||
rows
|
||||
end
|
||||
|
||||
# Executes a SQL query and returns a MySQL::Result object. Note that you have to free
|
||||
# Executes an SQL query and returns a MySQL::Result object. Note that you have to free
|
||||
# the Result object after you're done using it.
|
||||
def execute(sql, name = nil) #:nodoc:
|
||||
if name == :skip_logging
|
||||
|
@ -60,7 +60,7 @@ def save!(*)
|
||||
# reflect that no changes should be made (since they can't be
|
||||
# persisted). Returns the frozen instance.
|
||||
#
|
||||
# The row is simply removed with a SQL +DELETE+ statement on the
|
||||
# The row is simply removed with an SQL +DELETE+ statement on the
|
||||
# record's primary key, and no callbacks are executed.
|
||||
#
|
||||
# To enforce the object's +before_destroy+ and +after_destroy+
|
||||
|
@ -339,7 +339,7 @@ namespace :db do
|
||||
end
|
||||
|
||||
namespace :structure do
|
||||
desc "Dump the database structure to a SQL file"
|
||||
desc "Dump the database structure to an SQL file"
|
||||
task :dump => :environment do
|
||||
abcs = ActiveRecord::Base.configurations
|
||||
case abcs[Rails.env]["adapter"]
|
||||
|
@ -571,7 +571,9 @@ def reset_callbacks(symbol)
|
||||
#
|
||||
# would trigger <tt>Audit#before_save</tt> instead. That's constructed by calling
|
||||
# <tt>"#{kind}_#{name}"</tt> on the given instance. In this case "kind" is "before" and
|
||||
# "name" is "save".
|
||||
# "name" is "save". In this context treat ":kind" and ":name" as special thing where
|
||||
# ":kind" refers to "callback type(before/after)" and ":name" refers to the method on
|
||||
# which callbacks are being defined.
|
||||
#
|
||||
# A declaration like
|
||||
#
|
||||
|
@ -1,3 +1,38 @@
|
||||
# A typical module looks like this
|
||||
#
|
||||
# module M
|
||||
# def self.included(base)
|
||||
# base.send(:extend, ClassMethods)
|
||||
# base.send(:include, InstanceMethods)
|
||||
# scope :foo, :conditions => {:created_at => nil}
|
||||
# end
|
||||
#
|
||||
# module ClassMethods
|
||||
# def cm; puts 'I am class method'; end
|
||||
# end
|
||||
#
|
||||
# module InstanceMethods
|
||||
# def im; puts 'I am instance method'; end
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# By using <tt>ActiveSupport::Concern</tt> above module could be written as:
|
||||
#
|
||||
# module M
|
||||
# extend ActiveSupport::Concern
|
||||
#
|
||||
# included do
|
||||
# scope :foo, :conditions => {:created_at => nil}
|
||||
# end
|
||||
#
|
||||
# module ClassMethods
|
||||
# def cm; puts 'I am class method'; end
|
||||
# end
|
||||
#
|
||||
# module InstanceMethods
|
||||
# def im; puts 'I am instance method'; end
|
||||
# end
|
||||
# end
|
||||
module ActiveSupport
|
||||
module Concern
|
||||
def self.extended(base)
|
||||
|
@ -29,7 +29,7 @@ Documentation has to be concise but comprehensive. Explore and document edge cas
|
||||
|
||||
The proper names of Rails components have a space in between the words, like "Active Support". +ActiveRecord+ is a Ruby module, whereas Active Record is an ORM. Historically there has been lack of consistency regarding this, but we checked with David when docrails started. All Rails documentation consistently refer to Rails components by their proper name, and if in your next blog post or presentation you remember this tidbit and take it into account that'd be fenomenal :).
|
||||
|
||||
Spell names correctly: HTML, MySQL, JavaScript, ERb.
|
||||
Spell names correctly: HTML, MySQL, JavaScript, ERb. Use the article "an" for "SQL", as in "an SQL statement". Also "an SQLite database".
|
||||
|
||||
h3. Example Code
|
||||
|
||||
|
@ -213,9 +213,9 @@ If you open this file in a new Rails application, you'll see a default database
|
||||
* The +test+ environment is used to run automated tests
|
||||
* The +production+ environment is used when you deploy your application for the world to use.
|
||||
|
||||
h5. Configuring a SQLite3 Database
|
||||
h5. Configuring an SQLite3 Database
|
||||
|
||||
Rails comes with built-in support for "SQLite3":http://www.sqlite.org, which is a lightweight serverless database application. While a busy production environment may overload SQLite, it works well for development and testing. Rails defaults to using a SQLite database when creating a new project, but you can always change it later.
|
||||
Rails comes with built-in support for "SQLite3":http://www.sqlite.org, which is a lightweight serverless database application. While a busy production environment may overload SQLite, it works well for development and testing. Rails defaults to using an SQLite database when creating a new project, but you can always change it later.
|
||||
|
||||
Here's the section of the default configuration file (<tt>config/database.yml</tt>) with connection information for the development environment:
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
# http://rubyforge.org/projects/ruby-oci8/
|
||||
#
|
||||
# Specify your database using any valid connection syntax, such as a
|
||||
# tnsnames.ora service name, or a SQL connect url string of the form:
|
||||
# tnsnames.ora service name, or an SQL connect string of the form:
|
||||
#
|
||||
# //host:[port][/service name]
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user