aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-04-18 05:03:56 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-04-18 05:03:56 +0000
commit76690111d52dca6c1992ff6c9f9962c889b40c5d (patch)
treea3b2791b3a74e80c59a70709454bc379e7e80fa4 /activerecord
parentd547c3f5ecd0318d9d3ddb95778867d4c43273c2 (diff)
downloadrails-76690111d52dca6c1992ff6c9f9962c889b40c5d.tar.gz
rails-76690111d52dca6c1992ff6c9f9962c889b40c5d.tar.bz2
rails-76690111d52dca6c1992ff6c9f9962c889b40c5d.zip
Fixes for postgresql testing #1129, #1130, #1131
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1199 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord')
-rwxr-xr-xactiverecord/lib/active_record/base.rb27
-rw-r--r--activerecord/test/associations_go_eager_test.rb4
-rwxr-xr-xactiverecord/test/fixtures/db_definitions/mysql.sql2
-rw-r--r--activerecord/test/fixtures/db_definitions/postgresql.sql4
-rw-r--r--activerecord/test/fixtures/db_definitions/sqlite.sql2
-rw-r--r--activerecord/test/fixtures/posts.yml1
6 files changed, 23 insertions, 17 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index ee8d233d2c..1bc54558fe 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -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)
diff --git a/activerecord/test/associations_go_eager_test.rb b/activerecord/test/associations_go_eager_test.rb
index 498d557a02..0bd887478d 100644
--- a/activerecord/test/associations_go_eager_test.rb
+++ b/activerecord/test/associations_go_eager_test.rb
@@ -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
diff --git a/activerecord/test/fixtures/db_definitions/mysql.sql b/activerecord/test/fixtures/db_definitions/mysql.sql
index 8e263310ab..294f227be3 100755
--- a/activerecord/test/fixtures/db_definitions/mysql.sql
+++ b/activerecord/test/fixtures/db_definitions/mysql.sql
@@ -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
diff --git a/activerecord/test/fixtures/db_definitions/postgresql.sql b/activerecord/test/fixtures/db_definitions/postgresql.sql
index ae41f80788..2bc18dfb2b 100644
--- a/activerecord/test/fixtures/db_definitions/postgresql.sql
+++ b/activerecord/test/fixtures/db_definitions/postgresql.sql
@@ -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
);
diff --git a/activerecord/test/fixtures/db_definitions/sqlite.sql b/activerecord/test/fixtures/db_definitions/sqlite.sql
index 2a26ff8c37..33c85b4d1c 100644
--- a/activerecord/test/fixtures/db_definitions/sqlite.sql
+++ b/activerecord/test/fixtures/db_definitions/sqlite.sql
@@ -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
diff --git a/activerecord/test/fixtures/posts.yml b/activerecord/test/fixtures/posts.yml
index 9d22b2a603..037f0a2323 100644
--- a/activerecord/test/fixtures/posts.yml
+++ b/activerecord/test/fixtures/posts.yml
@@ -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