diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2005-04-30 15:49:28 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2005-04-30 15:49:28 +0000 |
commit | 2bf223051effaaf08c23936aaac16df672ccc899 (patch) | |
tree | 26d8e4aedfb652858a420640fa9ef0d465e6f1dd /activerecord | |
parent | eefe4d0ddd077f5e27caf8bfb5d306ed6cc86ed8 (diff) | |
download | rails-2bf223051effaaf08c23936aaac16df672ccc899.tar.gz rails-2bf223051effaaf08c23936aaac16df672ccc899.tar.bz2 rails-2bf223051effaaf08c23936aaac16df672ccc899.zip |
Added compatibility with camelCase column names for dynamic finders #533 [Dee.Zsombor]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1263 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 2 | ||||
-rwxr-xr-x | activerecord/test/base_test.rb | 3 | ||||
-rw-r--r-- | activerecord/test/fixtures/computers.yml | 3 | ||||
-rw-r--r-- | activerecord/test/fixtures/db_definitions/db2.sql | 3 | ||||
-rwxr-xr-x | activerecord/test/fixtures/db_definitions/mysql.sql | 3 | ||||
-rw-r--r-- | activerecord/test/fixtures/db_definitions/oci.sql | 3 | ||||
-rw-r--r-- | activerecord/test/fixtures/db_definitions/postgresql.sql | 3 | ||||
-rw-r--r-- | activerecord/test/fixtures/db_definitions/sqlite.sql | 3 | ||||
-rw-r--r-- | activerecord/test/fixtures/db_definitions/sqlserver.sql | 3 |
10 files changed, 19 insertions, 9 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index a8a1bf0ad6..26e2981dd3 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added compatibility with camelCase column names for dynamic finders #533 [Dee.Zsombor] + * Fixed extraneous comma in count() function that made it not work with joins #1156 [jarkko/Dee.Zsombor] * Fixed incompatibility with Base#find with an array of ids that would fail when using eager loading #1186 [Alisdair McDiarmid] diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index c11b6d23ed..283eb1070a 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -782,7 +782,7 @@ module ActiveRecord #:nodoc: def method_missing(method_id, *arguments) method_name = method_id.id2name - if method_name =~ /find_(all_by|by)_([_a-z][_a-z\d]*)/ + if method_name =~ /find_(all_by|by)_([_a-zA-Z]\w*)/ finder, attributes = ($1 == "all_by" ? :all : :first), $2.split("_and_") attributes.each { |attr_name| super unless column_methods_hash[attr_name.intern] } diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb index f0f2682bb1..595450eab9 100755 --- a/activerecord/test/base_test.rb +++ b/activerecord/test/base_test.rb @@ -12,6 +12,7 @@ class Smarts < ActiveRecord::Base; end class CreditCard < ActiveRecord::Base; end class MasterCreditCard < ActiveRecord::Base; end class Post < ActiveRecord::Base; end +class Computer < ActiveRecord::Base; end class LoosePerson < ActiveRecord::Base attr_protected :credit_rating, :administrator @@ -32,7 +33,7 @@ end class Booleantest < ActiveRecord::Base; end class BasicsTest < Test::Unit::TestCase - fixtures :topics, :companies, :projects + fixtures :topics, :companies, :projects, :computers def test_set_attributes topic = Topic.find(1) diff --git a/activerecord/test/fixtures/computers.yml b/activerecord/test/fixtures/computers.yml index 59253e0ce3..daf969d7da 100644 --- a/activerecord/test/fixtures/computers.yml +++ b/activerecord/test/fixtures/computers.yml @@ -1,3 +1,4 @@ workstation: id: 1 - developer: 1
\ No newline at end of file + developer: 1 + extendedWarranty: 1 diff --git a/activerecord/test/fixtures/db_definitions/db2.sql b/activerecord/test/fixtures/db_definitions/db2.sql index 1097568ce3..6d13c73fbe 100644 --- a/activerecord/test/fixtures/db_definitions/db2.sql +++ b/activerecord/test/fixtures/db_definitions/db2.sql @@ -126,7 +126,8 @@ CREATE TABLE binaries ( CREATE TABLE computers ( id int generated by default as identity (start with +10000), - developer int NOT NULL + developer int NOT NULL, + extendedWarranty int NOT NULL ); CREATE TABLE posts ( diff --git a/activerecord/test/fixtures/db_definitions/mysql.sql b/activerecord/test/fixtures/db_definitions/mysql.sql index da4a69252f..d105090355 100755 --- a/activerecord/test/fixtures/db_definitions/mysql.sql +++ b/activerecord/test/fixtures/db_definitions/mysql.sql @@ -126,7 +126,8 @@ CREATE TABLE `binaries` ( CREATE TABLE `computers` ( `id` INTEGER NOT NULL PRIMARY KEY, - `developer` INTEGER NOT NULL + `developer` INTEGER NOT NULL, + `extendedWarranty` INTEGER NOT NULL ) TYPE=InnoDB; CREATE TABLE `posts` ( diff --git a/activerecord/test/fixtures/db_definitions/oci.sql b/activerecord/test/fixtures/db_definitions/oci.sql index 9fa432ccfb..5650c93475 100644 --- a/activerecord/test/fixtures/db_definitions/oci.sql +++ b/activerecord/test/fixtures/db_definitions/oci.sql @@ -164,7 +164,8 @@ create table binaries ( create table computers ( id integer not null primary key, - developer integer not null references developers initially deferred disable + developer integer not null references developers initially deferred disable, + extendedWarranty integer not null ); create table posts ( diff --git a/activerecord/test/fixtures/db_definitions/postgresql.sql b/activerecord/test/fixtures/db_definitions/postgresql.sql index 9b57866368..6aa095c1a8 100644 --- a/activerecord/test/fixtures/db_definitions/postgresql.sql +++ b/activerecord/test/fixtures/db_definitions/postgresql.sql @@ -144,7 +144,8 @@ CREATE TABLE binaries ( CREATE TABLE computers ( id serial, - developer integer NOT NULL + developer integer NOT NULL, + extendedWarranty integer NOT NULL ); CREATE TABLE posts ( diff --git a/activerecord/test/fixtures/db_definitions/sqlite.sql b/activerecord/test/fixtures/db_definitions/sqlite.sql index 4507e2c4b2..07d2ea33fd 100644 --- a/activerecord/test/fixtures/db_definitions/sqlite.sql +++ b/activerecord/test/fixtures/db_definitions/sqlite.sql @@ -113,7 +113,8 @@ CREATE TABLE 'binaries' ( CREATE TABLE 'computers' ( 'id' INTEGER NOT NULL PRIMARY KEY, - 'developer' INTEGER NOT NULL + 'developer' INTEGER NOT NULL, + 'extendedWarranty' INTEGER NOT NULL ); CREATE TABLE 'posts' ( diff --git a/activerecord/test/fixtures/db_definitions/sqlserver.sql b/activerecord/test/fixtures/db_definitions/sqlserver.sql index 776ac23610..c96114de89 100644 --- a/activerecord/test/fixtures/db_definitions/sqlserver.sql +++ b/activerecord/test/fixtures/db_definitions/sqlserver.sql @@ -113,7 +113,8 @@ CREATE TABLE binaries ( CREATE TABLE computers ( id int NOT NULL IDENTITY(1, 1) PRIMARY KEY, - developer int NOT NULL + developer int NOT NULL, + extendedWarranty int NOT NULL ); CREATE TABLE posts ( |