Fixes for postgresql testing #1129, #1130, #1131

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1199 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2005-04-18 05:03:56 +00:00
parent d547c3f5ec
commit 76690111d5
6 changed files with 23 additions and 17 deletions

View File

@ -289,21 +289,28 @@ module ActiveRecord #:nodoc:
@@default_timezone = :local
class << self # Class methods
# Returns objects for the records responding to either a specific id (1), a list of ids (1, 5, 6) or an array of ids.
# If only one ID is specified, that object is returned directly. If more than one ID is specified, an array is returned.
# Find operates with three different retreval approaches:
#
# * Find by id: This can either be a specific id (1), a list of ids (1, 5, 6), or an array of ids ([5, 6, 10]).
# If no record can be found for all of the listed ids, then RecordNotFound will be raised.
# * Find first: This will return the first record matched by the options used. These options can either be specific
# conditions or merely an order. If no record can matched, nil is returned.
# # Find all: This will return all the records matched by the options used. If no records are found, an empty array is returned.
#
# All approaches accepts an option hash as their last parameter. The options are:
#
# * <tt>:conditions</tt>:
# * <tt>:order</tt>:
# * <tt>:limit</tt>:
# * <tt>:offset</tt>:
# * <tt>:joins</tt>:
# * <tt>:include</tt>:
#
# Examples:
# Person.find(1) # returns the object for ID = 1
# Person.find(1, 2, 6) # returns an array for objects with IDs in (1, 2, 6)
# Person.find([7, 17]) # returns an array for objects with IDs in (7, 17)
# Person.find([1]) # returns an array for objects the object with ID = 1
#
# The last argument may be a Hash of find options. Currently, +conditions+ is the only option, behaving the same as with +find_all+.
# Person.find(1, :conditions => "associate_id = 5"
# Person.find(1, 2, 6, :conditions => "status = 'active'"
# Person.find([7, 17], :conditions => ["sanitize_me = ?", "bare'quote"]
# Person.find(25, :conditions => ["name = :name AND age = :age", { :name => "Mary", :age => 22 }]
#
# +RecordNotFound+ is raised if no record can be found.
def find(*args)
options = extract_options_from_args!(args)

View File

@ -10,11 +10,11 @@ class EagerAssociationTest < Test::Unit::TestCase
def test_loading_with_one_association
posts = Post.find(:all, :include => :comments)
assert_equal 2, posts.first.comments.size
assert_equal @greetings.body, posts.first.comments.first.body
assert posts.first.comments.include?(@greetings)
post = Post.find(:first, :include => :comments, :conditions => "posts.title = 'Welcome to the weblog'")
assert_equal 2, post.comments.size
assert_equal @greetings.body, post.comments.first.body
assert post.comments.include?(@greetings)
end
def test_loading_with_multiple_associations

View File

@ -131,7 +131,7 @@ CREATE TABLE `computers` (
CREATE TABLE `posts` (
`id` INTEGER NOT NULL PRIMARY KEY,
`author_id` INTEGER NOT NULL,
`author_id` INTEGER,
`title` VARCHAR(255) NOT NULL,
`body` TEXT NOT NULL,
`type` VARCHAR(255) NOT NULL

View File

@ -167,7 +167,7 @@ CREATE TABLE authors (
name varchar(255) default NULL
);
CREATE TABLE taske (
CREATE TABLE tasks (
id serial,
starting timestamp,
ending timestamp,
@ -181,5 +181,5 @@ CREATE TABLE categories (
CREATE TABLE categories_posts (
category_id integer NOT NULL,
post_id int integer NOT NULL
post_id integer NOT NULL
);

View File

@ -118,7 +118,7 @@ CREATE TABLE 'computers' (
CREATE TABLE 'posts' (
'id' INTEGER NOT NULL PRIMARY KEY,
'author_id' INTEGER NOT NULL,
'author_id' INTEGER,
'title' VARCHAR(255) NOT NULL,
'type' VARCHAR(255) NOT NULL,
'body' TEXT NOT NULL

View File

@ -14,7 +14,6 @@ thinking:
authorless:
id: 3
author_id: ""
title: I don't have any comments
body: I just don't want to
type: Post