Commit Graph

3034 Commits

Author SHA1 Message Date
Joey Aghion
715b34fdff use supplied primary key when eager-loading belongs_to associations rather than default primary key
[#765]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2010-03-29 15:33:45 -07:00
Ernie Miller
00b95eb265 belongs_to associations now honor :primary_key option for joins
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2010-03-29 15:33:37 -07:00
Andrew White
03d5d0b5f5 Add the ability to specify table_name_prefix on individual modules
[#4032 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2010-03-29 08:55:21 -07:00
Aaron Patterson
5a806f6759 converting inject to each and map
[#4119 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2010-03-06 20:32:19 -08:00
Bryan Helmkamp
1e64cdf8c9 Bump version constants to 2.3.6 to more easily support generating prerelease gems 2010-03-01 18:24:55 -08:00
Tobias Bielohlawek
b06e5dce97 fixed a 'RecordNotFound' bug when calling 'reload' on a object which doesn't met the default_scope conditions, added test [#3166 status:resolved]
The reload method didn't made use of 'with_exclusive_scope' when reloading the object. This lead to a RecordNotFound exception, in case the object doesn't met the default_scope condition (anymore) - which is obviously a bug. This quick fix makes use of with_exclusive_scope in the reload method as well. See test for full example.

Signed-off-by: José Valim <jose.valim@gmail.com>
2010-02-26 11:39:15 +01:00
Jeremy Kemper
63a7ef0d74 Use Object#singleton_class instead of #metaclass. Prefer Ruby's choice. 2010-02-25 11:11:09 -08:00
Matt Duncan
b362b394f6 Bump year in MIT licenses
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2010-02-02 08:47:10 -06:00
José Valim
c50609c9f0 Merge remote branch 'eloy/2-3-stable' into 2-3-stable 2010-01-09 00:25:14 +01:00
Jeffrey Hardy
6e9b01fddb Allow AR::Schema's migrations_path to be overwritten by subclasses. Defaults to 'db/migrate'
[#3671 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2010-01-08 13:09:50 -08:00
Eloy Duran
51e6124e6a Renamed AssociationReflection #collection_association? to #collection?. 2010-01-08 21:44:06 +01:00
Eloy Duran
c9a3929a75 Rollback the transaction when one of the autosave associations fails to save. [#3391 state:resolved] 2010-01-08 21:36:27 +01:00
Lawrence Pit
eb22c248de Exclude unchanged records from the collection being considered for autosave. [#2578 state:resolved]
Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2010-01-08 21:36:27 +01:00
Bryan Stearns
2aef092625 Add failing test that triggers the stack overflow for #2578.
Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2010-01-08 21:36:26 +01:00
Eloy Duran
0dbe0f670e Raise a RecordNotFound if an ID in nested attributes is given but doesn't return a record. [#2415 state:resolved] 2010-01-07 13:20:43 +01:00
Eloy Duran
6d056c7175 Moved the validation logic to the association reflection and refactored autosave_association.rb a bit. 2010-01-07 13:20:43 +01:00
Eloy Duran
b3bd101796 Remove deprecated '_delete' option from NestedAttributes. 2010-01-07 13:20:42 +01:00
Eloy Duran
3d17d79bbf Removed unnecessary call to #try and cleaned up a bit more. 2010-01-07 13:20:42 +01:00
Eloy Duran
4b7a439bd1 Don't use strings for callbacks, as these will be evaled. Rather use symbols, which uses a direct method dispatch.
Patch by Comron Sattari. [#3429 state:resolved]
2010-01-07 13:20:42 +01:00
Eloy Duran
c48a71c7e4 Cleanup some code in nested_attributes.rb, autosave_association.rb, and associations.rb with AssociationReflection#collection_association?
Also cache the result value.
2010-01-07 13:20:42 +01:00
Eloy Duran
f12dd62d47 Add AssociationReflection#collection_association? which returns true if it's for a has_many or has_and_belongs_to_many association. 2010-01-07 13:20:42 +01:00
Eloy Duran
e20ac99026 Refactored nested attributes a bit after last commit. 2010-01-07 13:20:42 +01:00
Mike Breen
69db137f89 Allows you to pass :all_blank to :reject_if option to automatically create a Proc that will reject any record with blank attributes.
[#2501 state:resolved]

Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2010-01-07 13:20:41 +01:00
Stefan Penner
c362a76d00 Fixed multiparameter attribute assignment bug RE: Ticket 3131
http://rails.lighthouseapp.com/projects/8994/tickets/3131-multiparamter_attribute-assignment-fails-when-used-via-assoication
2010-01-02 23:48:09 -08:00
Stefan Penner
b3dd14adbe Failing test case RE: Ticket 3131
http://rails.lighthouseapp.com/projects/8994/tickets/3131-multiparamter_attribute-assignment-fails-when-used-via-assoication
2010-01-02 23:48:08 -08:00
Jeremy Kemper
54bc4852ea Fix pg test 2009-12-28 13:05:44 -08:00
Eloy Duran
90f001ba39 Refactored previous changes to nested attributes. 2009-12-28 21:08:20 +01:00
Michael Siebert
7074c5a629 Add an :update_only option to accepts_nested_attributes_for for to-one associations. [#2563 state:resolved]
Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2009-12-28 19:02:01 +01:00
Eloy Duran
146a750568 Make sure to not add autosave callbacks multiple times. [#3575 state:resolved]
This makes sure that, in a HABTM association, only one join record is craeted.
2009-12-28 16:46:48 +01:00
Murray Steele
3470b306bb Make polymorphic_inverse_of in Reflection throw an InverseOfAssociationNotFoundError if the supplied class doesn't have the appropriate association. [#3520 state:resolved]
Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2009-12-28 14:21:42 +01:00
Murray Steele
603b28c84c Provide a slightly more robust we_can_set_the_inverse_on_this? method for polymorphic belongs_to associations. [#3520 state:resolved]
Also add a new test for polymorphic belongs_to that test direct accessor assignment, not just .replace assignment.

Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2009-12-28 14:21:18 +01:00
George Ogata
cca75ca23f Add inverse polymorphic association support. [#3520 state:resolved]
Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2009-12-28 14:20:58 +01:00
Murray Steele
592085be83 Add more tests for the various ways we can assign objects to associations. [#3513 state:resolved]
Get rid of a duplicate set_inverse_instance call if you use new_record(true) (e.g. you want to replace the existing instance).

Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2009-12-28 14:20:33 +01:00
George Ogata
ed5b89483a Set inverse for #replace on a has_one association. [#3513 state:resolved]
Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2009-12-28 14:18:46 +01:00
Frederick Cheung
ab09ffd41e honour :inverse_of for joins based include
Signed-off-by: Michael Koziarski <michael@koziarski.com>
Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2009-12-28 13:32:04 +01:00
Frederick Cheung
894c9b112c honour inverse_of when preloading associations
Signed-off-by: Michael Koziarski <michael@koziarski.com>
Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
2009-12-28 13:31:29 +01:00
Murray Steele
5374fb3cad Providing support for :inverse_of as an option to associations.
You can now add an :inverse_of option to has_one, has_many and belongs_to associations.  This is best described with an example:

class Man < ActiveRecord::Base
  has_one :face, :inverse_of => :man
end

class Face < ActiveRecord::Base
  belongs_to :man, :inverse_of => :face
end

m = Man.first
f = m.face

Without :inverse_of m and f.man would be different instances of the same object (f.man being pulled from the database again).  With these new :inverse_of options m and f.man are the same in memory instance.

Currently :inverse_of supports has_one and has_many (but not the :through variants) associations.  It also supplies inverse support for belongs_to associations where the inverse is a has_one and it's not a polymorphic.

Signed-off-by: Murray Steele <muz@h-lame.com>
Signed-off-by: Michael Koziarski <michael@koziarski.com>
Signed-off-by: José Valim <jose.valim@gmail.com>
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>

Conflicts:

	activerecord/lib/active_record/associations/belongs_to_association.rb
	activerecord/lib/active_record/associations/has_one_association.rb
2009-12-21 13:13:32 -08:00
José Valim
1c3711b21b Fix another regression due to the inclusion of ActiveRecord::Error.
If a string is supplied to :default, it should not be used a
translation key (we already have :message for that).
[#3564 status:resolved]

Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-12-16 14:18:46 -06:00
Will
b1bbf90dff When passing force_reload = true to an association, don't use the query cache [#1827 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-12-16 10:49:40 -06:00
Serguei Filimonov
754bbaaf37 Added #to_i to DateTime in ActiveSupport so #to_yaml works correctly on ActiveRecord models with DateTime attributes. 2009-12-15 08:34:02 -06:00
John Pignata
1d9468b44e Fix postgresql AR test failure
Due to the ordering of the returning result set, the test fails under the postgresql adapter. Order results by id prior to checking the first item

[#3542 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-12-11 15:15:37 -06:00
Jeremy Kemper
b9f352316e Ruby 1.9.2: exclude to_str from explicit coercion check too 2009-12-06 16:54:53 -08:00
Jeremy Kemper
64082b350c Ruby 1.9.2: explicitly raise NoMethodError for attempts at explicit coercion 2009-12-06 16:46:01 -08:00
Gabe da Silveira
43d2cb8e93 Replace reset_counter_cache with reset_counters that has API inline with existing update_counters method
[#1211 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-12-03 23:25:41 -08:00
Ben Marini
ccb197b2e6 Add support for Mysql column positioning via #add_column and #change_column
add_column and change_column in the Mysql adapter now accept some
additional options:
:first => true        # Put the column in front of all the columns
:after => column_name # Put the colmn after 'column_name'

add_column :new_col, :string, :first => true
add_column :another_col, :integer, :default => 0, :after => :new_col

[#3286 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-12-03 23:10:35 -08:00
Mat Brown
2f1ded3067 Fix instance_eval calls to association proxies
In the current stable, ActiveRecord::Associations::AssociationProxy#method_missing calls yield() if a block is given, causing the block to always be evaluated in its calling context. However, in the case of instance_eval, correct behavior requires that the block be passed directly to the @target, rather than being evaluated inside a different block. Incidentally, this also simplifies the code slightly.

[#3412 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-12-02 12:46:36 -08:00
Mike Breen
1db3a27961 Implement ActiveRecord#reset_counter_cache
[#1211 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-12-02 12:08:57 -08:00
Michael Koziarski
ec542caf58 Prepare for the 2.3.5 release 2009-11-25 18:56:12 +13:00
Gabe da Silveira
df0720b8b7 Insert generated association members in the same order they are specified when assigning to a has_many :through using the generated *_ids method
[#3491 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-11-17 22:24:53 -08:00
Jeremy Kemper
ed320cd896 Revert "Ensure Model#destroy respects optimistic locking"
Unresolved issues with :dependent => :destroy and counter caching.

[#1966 state:open]

This reverts commit 0d922885fb.
2009-11-17 15:31:02 -08:00