Commit Graph

86 Commits

Author SHA1 Message Date
David Heinemeier Hansson
4263490728 Fix has_many :through
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3227 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-12-07 23:20:11 +00:00
David Heinemeier Hansson
6abda696b5 Added preliminary support for join models [DHH] Added preliminary support for polymorphic associations [DHH] Refactored associations to use reflections to get DRYer, beware, major refactoring -- double check before deploying anything with this (all tests pass, but..)
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3213 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-12-03 04:29:55 +00:00
David Heinemeier Hansson
57b7532b91 Work-in progress for providing better join model support and polymorphic associations
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3209 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-12-02 06:03:43 +00:00
Jeremy Kemper
d21ba5aec9 has_and_belongs_to_many: use JOIN instead of LEFT JOIN. References #2937.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3155 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-11-21 22:27:19 +00:00
Jeremy Kemper
86da56a654 Don't add the same conditions twice in has_one finder sql. References #2916.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3074 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-11-17 20:45:38 +00:00
Jeremy Kemper
3441dfdb12 Associations handle case-equality more consistently: item.parts.is_a?(Array) and item.parts === Array. Closes #1345.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3043 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-11-15 10:48:32 +00:00
Jeremy Kemper
3309268120 Add :group option, correspond to GROUP BY, to the find method and to the has_many association. Closes #2818.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2974 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-11-10 16:36:01 +00:00
David Heinemeier Hansson
49c801b71d Added :include as an option for association declarations [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2898 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-11-06 20:39:34 +00:00
Jeremy Kemper
390e6d246c r2915@asus: jeremy | 2005-11-06 05:02:53 -0800
Rename Base.constrain to Base.with_scope so it doesn't conflict with existing concept of database constraints.  Make scoping more robust: uniform method => parameters, validated method names and supported finder parameters, raise exception on nested scopes.


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2888 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-11-06 10:18:51 +00:00
David Heinemeier Hansson
a5a82d978b Added extension capabilities to has_many and has_and_belongs_to_many proxies [DHH] Added find_or_create_by_X as a second type of dynamic finder that'll create the record if it doesn't already exist [DHH] Added constrain scoping for creates using a hash of attributes bound to the :creation key [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2872 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-11-04 19:39:50 +00:00
David Heinemeier Hansson
8c512a1caf Added extension capabilities to has_many and has_and_belongs_to_many proxies [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2861 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-11-03 09:06:42 +00:00
Jeremy Kemper
e7cd7e9d95 r3800@sedna: jeremy | 2005-10-28 00:39:05 -0700
Readonly constraints, association collection method_missing, dup constraint options


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2774 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-28 04:53:22 +00:00
Tobias Lütke
5f0b9369cc Fix Associations#clear for not-yet-loaded associations (Patrick Lenz)
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2695 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-20 15:05:48 +00:00
Jeremy Kemper
7219e82fe6 HABTM finder sets :readonly => false. Closes #2525.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2694 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-20 14:53:04 +00:00
Jeremy Kemper
328ef3feaa Parenthesize :conditions
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2681 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-18 23:52:07 +00:00
Nicholas Seckar
67e900c0f4 Fix bad commit. (Bad developer, bad\!)
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2633 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-16 01:20:43 +00:00
Nicholas Seckar
9369137676 Add __FILE__ and __LINE__ to eval
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2629 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-15 22:56:36 +00:00
Tobias Lütke
5fa8793f02 DRYed up Associations#clear. Closes #1906 [Caleb]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2580 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-14 12:53:39 +00:00
Jamis Buck
99f3ae0845 Fix errors caused by assigning a has-one or belongs-to property to itself
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2562 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-10-13 19:21:45 +00:00
Jeremy Kemper
efaf2af07c r3653@asus: jeremy | 2005-09-28 00:23:49 -0700
Ticket 2221 - model.association.clear should destroy associated objects if :dependent => true instead of nullifying their foreign keys


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2384 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-09-28 03:52:57 +00:00
Jamis Buck
2a35baa0bb Wrap :conditions in parentheses to prevent problems with OR's #1871
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2324 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-09-24 23:58:13 +00:00
David Heinemeier Hansson
66ecf31ffe Fixed that the create_x method from belongs_to wouldn't save the association properly #2042 [Florian Weber]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2279 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-09-20 18:36:14 +00:00
Jamis Buck
5213a1f733 Fixed saving a record with two unsaved belongs_to associations pointing to the same object #2023 [Tobias Luetke]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2278 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-09-20 16:12:13 +00:00
David Heinemeier Hansson
4307d7ecbe Fixed various problems with has_and_belongs_to_many when using customer finder_sql #2094 [Florian Weber]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2233 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-09-13 10:15:54 +00:00
David Heinemeier Hansson
3e00e1a297 Use the inflector rules made for the purpose
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2186 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-09-11 06:25:09 +00:00
David Heinemeier Hansson
eb10742581 Dont be ambigious about the condition key
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1896 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-07-22 20:22:55 +00:00
David Heinemeier Hansson
34f9d30e39 Added support for calling constrained class methods on has_many and has_and_belongs_to_many collections #1764 [Tobias Luetke]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1894 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-07-22 20:05:42 +00:00
Jamis Buck
83e2f6ae1e Allow unspecified join-table columns to use to their default values when adding to a habtm collection
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1860 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-07-18 11:06:41 +00:00
David Heinemeier Hansson
9870396ed1 Fixed incompatibility in DB2 adapter with the new limit/offset approach #1718 [Maik Schmidt]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1850 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-07-17 09:52:00 +00:00
David Heinemeier Hansson
0e92f36d75 Added callbacks on push_with_attributes #1594 [Florian Weber]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1698 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-07-05 07:20:24 +00:00
David Heinemeier Hansson
4180e57b70 Added callback hooks to association collections #1549 [Florian Weber]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1653 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-07-04 08:43:57 +00:00
David Heinemeier Hansson
df95128e94 Fixed that has_and_belongs_to_many didn't respect single table inheritance types #1081 [Florian Weber]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1641 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-07-03 08:52:59 +00:00
Jeremy Kemper
c8e2cf3ed0 Pass association finder arguments through to the association class exactly as we received them. Fixes case where parent.children.find() is interpreted as Child.find([]) instead of Child.find().
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1498 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-24 20:23:38 +00:00
David Heinemeier Hansson
a2f26b971b Fixed that adding a record to a has_and_belongs_to collection would always save it -- now it only saves if its a new record #1203 [Alisdair McDiarmid]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1453 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-18 05:28:59 +00:00
David Heinemeier Hansson
bfe6a759c2 Added actual database-changing behavior to collection assigment for has_many and has_and_belongs_to_many #1425 [Sebastian Kanthak]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1428 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-16 05:35:10 +00:00
Jeremy Kemper
1d9905a67f r1307@iwill: jeremy | 2005-06-13 19:05:00 -0700
Ticket 1312 - Malformed habtm finder sql
 r1308@iwill:  jeremy | 2005-06-13 19:58:48 -0700
 Add a habtm with an unquoted condition to Project.
 r1309@iwill:  jeremy | 2005-06-13 19:59:46 -0700
 Space out habtm finder conditions.
 r1310@iwill:  jeremy | 2005-06-13 20:00:16 -0700
 Test habtm.find with quoted and unquoted conditions.
 r1311@iwill:  jeremy | 2005-06-13 20:00:25 -0700
 Update changelog


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1414 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-13 21:51:43 +00:00
Jamis Buck
37a370d8d4 Be sure to use the @finder_sql in the has_many association's #find method, even if explicit conditions have not been given.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1412 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-13 12:03:33 +00:00
Jeremy Kemper
76e4c1a558 r1294@iwill: jeremy | 2005-06-13 02:17:42 -0700
Ticket #1281
 r1295@iwill:  jeremy | 2005-06-13 02:50:50 -0700
 Apply patch, tweak, and test.
 r1296@iwill:  jeremy | 2005-06-13 02:51:04 -0700
 Changelog entry.


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1410 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-13 04:42:36 +00:00
David Heinemeier Hansson
7411af95db Replace the in-memory object, but dont orphan the existing one
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1393 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-07 12:48:37 +00:00
David Heinemeier Hansson
2bdaff4a4e Added a second parameter to the build and create method for has_one that controls whether the existing association should be replaced (which means nullifying its foreign key as well). By default this is true, but false can be passed to prevent it.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1392 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-06-06 21:10:59 +00:00
David Heinemeier Hansson
190e04645b Fixed that :delete_sql in has_and_belongs_to_many associations couldn't access record properties #1299 [Rick Olson]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1313 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-05-19 17:07:56 +00:00
David Heinemeier Hansson
56412f4441 Optimize counting of has_many associations by setting the association to empty if the count is 0
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1235 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-23 18:18:18 +00:00
David Heinemeier Hansson
6f34400086 Fixed order of loading in eager associations
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1229 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-19 16:32:57 +00:00
David Heinemeier Hansson
cdf88b7b04 Fixed stray comma when using eager loading and ordering together from has_many associations #1143
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1220 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-19 05:24:50 +00:00
David Heinemeier Hansson
49d0f0cb66 Speeded up eager loading a whole bunch
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1212 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-18 18:49:34 +00:00
David Heinemeier Hansson
c1611a703c Updated documentation here and there
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1210 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-18 15:31:20 +00:00
David Heinemeier Hansson
5e9dc49744 Dont prefix on updates and deletes, only selects
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1177 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-17 06:32:49 +00:00
David Heinemeier Hansson
9dd8d3d3e4 Honor the order in the new finder
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1167 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-15 08:32:56 +00:00
David Heinemeier Hansson
cef09015c7 Order by is no longer a guarentee
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1164 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-14 04:07:26 +00:00
David Heinemeier Hansson
ff1db4de5f Qualify the ids used such that eager loading can avoid ambigious keys
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1163 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
2005-04-13 18:12:59 +00:00